| 1371 | } |
| 1372 | |
| 1373 | static void NullSetRenderTargetSize(HContext context, HRenderTarget render_target, uint32_t width, uint32_t height) |
| 1374 | { |
| 1375 | DM_MUTEX_OPTIONAL_SCOPED_LOCK(g_NullContext->m_BaseContext.m_AssetHandleContainerMutex); |
| 1376 | NullRenderTarget* rt = GetAssetFromContainer<NullRenderTarget>(g_NullContext->m_BaseContext.m_AssetHandleContainer, render_target); |
| 1377 | |
| 1378 | uint32_t buffer_size = sizeof(uint32_t) * width * height; |
| 1379 | void** color_buffers[MAX_BUFFER_COLOR_ATTACHMENTS] = { |
| 1380 | &rt->m_FrameBuffer.m_ColorBuffer[0], |
| 1381 | &rt->m_FrameBuffer.m_ColorBuffer[1], |
| 1382 | &rt->m_FrameBuffer.m_ColorBuffer[2], |
| 1383 | &rt->m_FrameBuffer.m_ColorBuffer[3], |
| 1384 | }; |
| 1385 | |
| 1386 | uint32_t* color_buffer_sizes[MAX_BUFFER_COLOR_ATTACHMENTS] = { |
| 1387 | &rt->m_FrameBuffer.m_ColorBufferSize[0], |
| 1388 | &rt->m_FrameBuffer.m_ColorBufferSize[1], |
| 1389 | &rt->m_FrameBuffer.m_ColorBufferSize[2], |
| 1390 | &rt->m_FrameBuffer.m_ColorBufferSize[3], |
| 1391 | }; |
| 1392 | |
| 1393 | for (uint32_t i = 0; i < MAX_BUFFER_COLOR_ATTACHMENTS; ++i) |
| 1394 | { |
| 1395 | if (color_buffers[i]) |
| 1396 | { |
| 1397 | *(color_buffer_sizes[i]) = buffer_size; |
| 1398 | rt->m_Base.m_ColorTextureParams[i].m_Width = width; |
| 1399 | rt->m_Base.m_ColorTextureParams[i].m_Height = height; |
| 1400 | |
| 1401 | if (rt->m_Base.m_TextureColor[i]) |
| 1402 | { |
| 1403 | rt->m_Base.m_ColorTextureParams[i].m_DataSize = buffer_size; |
| 1404 | SetTexture((HContext)g_NullContext, rt->m_Base.m_TextureColor[i], rt->m_Base.m_ColorTextureParams[i]); |
| 1405 | NullTexture* tex = GetAssetFromContainer<NullTexture>(g_NullContext->m_BaseContext.m_AssetHandleContainer, rt->m_Base.m_TextureColor[i]); |
| 1406 | *(color_buffers[i]) = tex->m_Data; |
| 1407 | } |
| 1408 | } |
| 1409 | } |
| 1410 | |
| 1411 | if (rt->m_Base.m_TextureDepth) |
| 1412 | { |
| 1413 | rt->m_FrameBuffer.m_DepthTextureBufferSize = buffer_size; |
| 1414 | rt->m_Base.m_DepthBufferParams.m_Width = width; |
| 1415 | rt->m_Base.m_DepthBufferParams.m_Height = height; |
| 1416 | rt->m_Base.m_DepthBufferParams.m_DataSize = buffer_size; |
| 1417 | SetTexture((HContext)g_NullContext, rt->m_Base.m_TextureDepth, rt->m_Base.m_DepthBufferParams); |
| 1418 | NullTexture* tex = GetAssetFromContainer<NullTexture>(g_NullContext->m_BaseContext.m_AssetHandleContainer, rt->m_Base.m_TextureDepth); |
| 1419 | rt->m_FrameBuffer.m_DepthTextureBuffer = tex->m_Data; |
| 1420 | } |
| 1421 | else if (rt->m_FrameBuffer.m_DepthBuffer) |
| 1422 | { |
| 1423 | rt->m_FrameBuffer.m_DepthTextureBufferSize = buffer_size; |
| 1424 | rt->m_Base.m_DepthBufferParams.m_Width = width; |
| 1425 | rt->m_Base.m_DepthBufferParams.m_Height = height; |
| 1426 | rt->m_Base.m_DepthBufferParams.m_DataSize = buffer_size; |
| 1427 | delete [] (char*) rt->m_FrameBuffer.m_DepthBuffer; |
| 1428 | rt->m_FrameBuffer.m_DepthBuffer = new char[buffer_size]; |
| 1429 | } |
| 1430 |
nothing calls this directly
no test coverage detected