mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-28 10:21:48 +00:00
VK_Indirect: add a large IndirectCount draw before execute secondary
This commit is contained in:
@@ -99,6 +99,17 @@ void main()
|
||||
ssbo.data[20] = uvec4(3, 4, 3, 4); // draw verts 3..5
|
||||
ssbo.data[21] = uvec4(3, 2, 6, 2); // draw verts 6..8
|
||||
ssbo.data[22] = uvec4(3, 5, 9, 5); // draw verts 9..11
|
||||
|
||||
// write count parameters for large indirect count draw
|
||||
uint i = 30;
|
||||
ssbo.data[i++] = uvec4(20*3, 0, 0, 0);
|
||||
// vkCmdDrawIndirectCountKHR()
|
||||
for (uint j = 0; j < 20; ++j)
|
||||
{
|
||||
ssbo.data[i++] = uvec4(3, 4, 3, 4); // draw verts 3..5
|
||||
ssbo.data[i++] = uvec4(3, 2, 6, 2); // draw verts 6..8
|
||||
ssbo.data[i++] = uvec4(3, 5, 9, 5); // draw verts 9..11
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -534,6 +545,25 @@ void main()
|
||||
|
||||
vkCmdExecuteCommands(primary, 1, &dispatch_secondary);
|
||||
|
||||
// IndirectCount draw in primary buffer which a large count in buffer, before execute secondary
|
||||
if(KHR_draw_indirect_count)
|
||||
{
|
||||
vkCmdBeginRenderPass(
|
||||
primary,
|
||||
vkh::RenderPassBeginInfo(mainWindow->rp, mainWindow->GetFB(), mainWindow->scissor),
|
||||
VK_SUBPASS_CONTENTS_INLINE);
|
||||
|
||||
vkCmdBindPipeline(primary, VK_PIPELINE_BIND_POINT_GRAPHICS, drawpipe);
|
||||
vkCmdSetViewport(primary, 0, 1, &mainWindow->viewport);
|
||||
vkCmdSetScissor(primary, 0, 1, &mainWindow->scissor);
|
||||
vkh::cmdBindVertexBuffers(primary, 0, {vb.buffer}, {0});
|
||||
vkCmdBindIndexBuffer(primary, ib.buffer, 0, VK_INDEX_TYPE_UINT32);
|
||||
|
||||
vkCmdDrawIndirectCountKHR(primary, ssbo.buffer, 31 * sizeof(uvec4), ssbo.buffer,
|
||||
30 * sizeof(uvec4) + 0 * sizeof(uint32_t), 128, sizeof(uvec4));
|
||||
vkCmdEndRenderPass(primary);
|
||||
}
|
||||
|
||||
vkCmdBeginRenderPass(
|
||||
primary, vkh::RenderPassBeginInfo(mainWindow->rp, mainWindow->GetFB(), mainWindow->scissor),
|
||||
VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS);
|
||||
|
||||
Reference in New Issue
Block a user