diff options
Diffstat (limited to '3rdparty/bgfx/src/renderer_d3d12.cpp')
-rw-r--r-- | 3rdparty/bgfx/src/renderer_d3d12.cpp | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/3rdparty/bgfx/src/renderer_d3d12.cpp b/3rdparty/bgfx/src/renderer_d3d12.cpp index d7a449ea82d..2f36d1aa102 100644 --- a/3rdparty/bgfx/src/renderer_d3d12.cpp +++ b/3rdparty/bgfx/src/renderer_d3d12.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * Copyright 2011-2017 Branimir Karadzic. All rights reserved. * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause */ @@ -498,6 +498,8 @@ namespace bgfx { namespace d3d12 ErrorState::Enum errorState = ErrorState::Default; LUID luid; +// m_renderdocdll = loadRenderDoc(); + m_fbh.idx = invalidHandle; memset(m_uniforms, 0, sizeof(m_uniforms) ); memset(&m_resolution, 0, sizeof(m_resolution) ); @@ -1181,6 +1183,7 @@ namespace bgfx { namespace d3d12 #endif // USE_D3D12_DYNAMIC_LIB case ErrorState::Default: default: + unloadRenderDoc(m_renderdocdll); break; } @@ -1238,6 +1241,8 @@ namespace bgfx { namespace d3d12 DX_RELEASE(m_adapter, 0); DX_RELEASE(m_factory, 0); + unloadRenderDoc(m_renderdocdll); + #if USE_D3D12_DYNAMIC_LIB bx::dlclose(m_dxgidll); bx::dlclose(m_d3d12dll); @@ -3880,7 +3885,7 @@ data.NumQualityLevels = 0; } else if (0 == (BGFX_UNIFORM_SAMPLERBIT & type) ) { - const UniformInfo* info = s_renderD3D12->m_uniformReg.find(name); + const UniformRegInfo* info = s_renderD3D12->m_uniformReg.find(name); BX_WARN(NULL != info, "User defined uniform '%s' is not found, it won't be set.", name); if (NULL != info) @@ -4247,7 +4252,7 @@ data.NumQualityLevels = 0; m_uavd.Texture2D.PlaneSlice = 0; } - if( m_type==TextureCube ) + if (TextureCube == m_type) { m_uavd.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DARRAY; m_uavd.Texture2DArray.MipSlice = 0; @@ -4359,7 +4364,6 @@ data.NumQualityLevels = 0; desc.Height = _rect.m_height; uint32_t numRows; - uint64_t rowPitch; uint64_t totalBytes; D3D12_PLACED_SUBRESOURCE_FOOTPRINT layout; s_renderD3D12->m_device->GetCopyableFootprints(&desc @@ -4368,12 +4372,13 @@ data.NumQualityLevels = 0; , 0 , &layout , &numRows - , &rowPitch + , NULL , &totalBytes ); - ID3D12Resource* staging = createCommittedResource(s_renderD3D12->m_device, HeapProperty::Upload, totalBytes); + const uint32_t rowPitch = layout.Footprint.RowPitch; + ID3D12Resource* staging = createCommittedResource(s_renderD3D12->m_device, HeapProperty::Upload, totalBytes); uint8_t* data; DX_CHECK(staging->Map(0, NULL, (void**)&data) ); @@ -4849,7 +4854,8 @@ data.NumQualityLevels = 0; int32_t numItems = _render->m_num; for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;) { - const bool isCompute = key.decode(_render->m_sortKeys[item], _render->m_viewRemap); + const uint64_t encodedKey = _render->m_sortKeys[item]; + const bool isCompute = key.decode(encodedKey, _render->m_viewRemap); statsKeyType[isCompute]++; const bool viewChanged = 0 @@ -4907,7 +4913,8 @@ data.NumQualityLevels = 0; prim = s_primInfo[BX_COUNTOF(s_primName)]; // Force primitive type update. - for (; blitItem < numBlitItems && blitKey.m_view <= view; blitItem++) + const uint8_t blitView = SortKey::decodeView(encodedKey); + for (; blitItem < numBlitItems && blitKey.m_view <= blitView; blitItem++) { const BlitItem& blit = _render->m_blitItem[blitItem]; blitKey.decode(_render->m_blitKeys[blitItem+1]); @@ -5473,11 +5480,14 @@ data.NumQualityLevels = 0; const int64_t timerFreq = bx::getHPFrequency(); - perfStats.cpuTimeEnd = now; - perfStats.cpuTimerFreq = timerFreq; - perfStats.gpuTimeBegin = m_gpuTimer.m_begin; - perfStats.gpuTimeEnd = m_gpuTimer.m_end; - perfStats.gpuTimerFreq = m_gpuTimer.m_frequency; + perfStats.cpuTimeEnd = now; + perfStats.cpuTimerFreq = timerFreq; + perfStats.gpuTimeBegin = m_gpuTimer.m_begin; + perfStats.gpuTimeEnd = m_gpuTimer.m_end; + perfStats.gpuTimerFreq = m_gpuTimer.m_frequency; + perfStats.numDraw = statsKeyType[0]; + perfStats.numCompute = statsKeyType[1]; + perfStats.maxGpuLatency = maxGpuLatency; if (_render->m_debug & (BGFX_DEBUG_IFH | BGFX_DEBUG_STATS) ) { @@ -5605,10 +5615,10 @@ data.NumQualityLevels = 0; , m_batch.m_stats.m_numImmediate[BatchD3D12::DrawIndexed] ); -// if (NULL != m_renderdocdll) -// { -// tvm.printf(tvm.m_width-27, 0, 0x1f, " [F11 - RenderDoc capture] "); -// } + if (NULL != m_renderdocdll) + { + tvm.printf(tvm.m_width-27, 0, 0x1f, " [F11 - RenderDoc capture] "); + } tvm.printf(10, pos++, 0x8e, " Indices: %7d ", statsNumIndices); tvm.printf(10, pos++, 0x8e, " Uniform size: %7d, Max: %7d ", _render->m_uniformEnd, _render->m_uniformMax); |