From 104224b9022794fd9eff77154482630bcf18348c Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Wed, 27 Sep 2023 16:18:17 -0400 Subject: align render-time binding indexes with pipeline layout --- src/window.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/window.cpp') diff --git a/src/window.cpp b/src/window.cpp index 66e2095..5598e56 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1351,6 +1351,8 @@ void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { vkCmdSetViewport(commandBuffer, 0, 1, &viewport); vkCmdSetScissor(commandBuffer, 0, 1, &scissor); + VkDeviceSize offsets[1] = {0U}; + const uint64_t bindBucketCount = ECS_GetGrBinds_BucketCount(); for (long b = 0; b < bindBucketCount; ++b) { uint64_t itemCount; @@ -1359,16 +1361,18 @@ void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { CompGrBinds *binder = &items[i]; if (!binder->vkPipelineLayout) continue; + if (binder->instanceBindingCount < 1) { + continue; + } + vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, binder->graphicsPipeline); vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, binder->vkPipelineLayout, 0, 1, &binder->vkDescriptorSets[CURRENT_FRAME], 0, {}); + vkCmdBindVertexBuffers(commandBuffer, 0, 1, &UniformBuffers[CURRENT_FRAME], offsets); + vkCmdBindIndexBuffer(commandBuffer, binder->indexBuffer, binder->indexOffsets, VK_INDEX_TYPE_UINT16); + vkCmdBindVertexBuffers(commandBuffer, binder->vertexFirstBinding, binder->vertexBindingCount, &binder->vertexBuffer, &binder->vertexOffsets); - if (binder->normalsBindingCount > 0) - vkCmdBindVertexBuffers(commandBuffer, binder->normalsFirstBinding, binder->normalsBindingCount, &binder->normalsBuffer, &binder->normalsOffsets); - if (binder->uvBindingCount > 0) - vkCmdBindVertexBuffers(commandBuffer, binder->uvFirstBinding, binder->uvBindingCount, &binder->uvBuffer, &binder->uvOffsets); - if (binder->indexBindingCount > 0) - vkCmdBindIndexBuffer(commandBuffer, binder->indexBuffer, binder->vertexOffsets, VK_INDEX_TYPE_UINT16); - - vkCmdBindVertexBuffers(commandBuffer, binder->indexFirstBinding, binder->instanceBindingCount, &binder->instanceBuffer, &binder->instanceOffsets); + vkCmdBindVertexBuffers(commandBuffer, binder->normalsFirstBinding, binder->normalsBindingCount, &binder->normalsBuffer, &binder->normalsOffsets); + vkCmdBindVertexBuffers(commandBuffer, binder->uvFirstBinding, binder->uvBindingCount, &binder->uvBuffer, &binder->uvOffsets); + vkCmdBindVertexBuffers(commandBuffer, binder->instanceFirstBinding, binder->instanceBindingCount, &binder->instanceBuffer, &binder->instanceOffsets); vkCmdDrawIndexed(commandBuffer, binder->indexCount, binder->instances.Count(), 0, 0, 0); } -- cgit v1.2.3