summaryrefslogtreecommitdiff
path: root/video.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'video.cpp')
-rw-r--r--video.cpp34
1 files changed, 27 insertions, 7 deletions
diff --git a/video.cpp b/video.cpp
index 3dc1e61..7bb420d 100644
--- a/video.cpp
+++ b/video.cpp
@@ -1829,13 +1829,33 @@ void Context::submit(
VkDeviceSize offset = (VkDeviceSize)binding->offset;
vkCmdBindVertexBuffers(ctx->cb, 0, 1, &buf, &offset);
}
- vkCmdDraw(
- ctx->cb,
- draw.vertex_count,
- draw.instance_count,
- draw.first_vertex,
- draw.first_instance
- );
+ if (draw.inds.id) {
+ const Index_Buffer_Binding& inds = draw.inds;
+ VkBuffer buf = ((Buffer_Vk*)&dev->get_buffer(inds.id))->buf;
+ VkDeviceSize offset = (VkDeviceSize)inds.offset;
+ vkCmdBindIndexBuffer(
+ ctx->cb,
+ buf,
+ offset,
+ VK_INDEX_TYPE_UINT16
+ );
+ vkCmdDrawIndexed(
+ ctx->cb,
+ draw.vertex_count,
+ draw.instance_count,
+ draw.first_vertex,
+ draw.vertex_offset,
+ draw.first_instance
+ );
+ } else {
+ vkCmdDraw(
+ ctx->cb,
+ draw.vertex_count,
+ draw.instance_count,
+ draw.first_vertex,
+ draw.first_instance
+ );
+ }
ctx->end_rp(rpo);
pso.on_submit();
if (dso)