summaryrefslogtreecommitdiff
path: root/src/window.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-09-27 16:18:17 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-09-27 16:18:17 -0400
commit104224b9022794fd9eff77154482630bcf18348c (patch)
tree4e456f9350789a29d9f4b828f4fa195728ec3f13 /src/window.cpp
parentb14582679d0a113cb8571a7e6764436391d6af48 (diff)
align render-time binding indexes with pipeline layout
Diffstat (limited to 'src/window.cpp')
-rw-r--r--src/window.cpp20
1 files changed, 12 insertions, 8 deletions
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);
}