From 664e212e3cd94a512a3eb6da8ca042cecdc346f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Fri, 9 Mar 2018 18:20:36 -0800 Subject: [PATCH] D3D12: Adding dispatch indirect support. --- src/renderer_d3d12.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index 48ff233df..b155b05cc 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -1315,7 +1315,7 @@ namespace bgfx { namespace d3d12 | BGFX_CAPS_TEXTURE_3D | BGFX_CAPS_TEXTURE_COMPARE_ALL | BGFX_CAPS_INSTANCING -// | BGFX_CAPS_DRAW_INDIRECT + | BGFX_CAPS_DRAW_INDIRECT | BGFX_CAPS_VERTEX_ATTRIB_HALF | BGFX_CAPS_VERTEX_ATTRIB_UINT10 | BGFX_CAPS_FRAGMENT_DEPTH @@ -6056,19 +6056,21 @@ data.NumQualityLevels = 0; if (isValid(compute.m_indirectBuffer) ) { - const VertexBufferD3D12& vb = m_vertexBuffers[compute.m_indirectBuffer.idx]; + const VertexBufferD3D12& indirect = m_vertexBuffers[compute.m_indirectBuffer.idx]; uint32_t numDrawIndirect = UINT16_MAX == compute.m_numIndirect - ? vb.m_size/BGFX_CONFIG_DRAW_INDIRECT_STRIDE + ? indirect.m_size/BGFX_CONFIG_DRAW_INDIRECT_STRIDE : compute.m_numIndirect ; - uint32_t args = compute.m_startIndirect * BGFX_CONFIG_DRAW_INDIRECT_STRIDE; - for (uint32_t ii = 0; ii < numDrawIndirect; ++ii) - { -// m_commandList->ExecuteIndirect(ptr, args); - args += BGFX_CONFIG_DRAW_INDIRECT_STRIDE; - } + m_commandList->ExecuteIndirect( + s_renderD3D12->m_commandSignature[0] + , numDrawIndirect + , indirect.m_ptr + , compute.m_startIndirect * BGFX_CONFIG_DRAW_INDIRECT_STRIDE + , NULL + , 0 + ); } else {