summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/src/renderer_d3d12.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/src/renderer_d3d12.cpp')
-rw-r--r--3rdparty/bgfx/src/renderer_d3d12.cpp44
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);