tu: Implement vkCmdBindIndexBuffer2KHR
authorConnor Abbott <cwabbott0@gmail.com>
Fri, 1 Sep 2023 13:31:08 +0000 (15:31 +0200)
committerMarge Bot <emma+marge@anholt.net>
Wed, 27 Sep 2023 19:07:22 +0000 (19:07 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25001>

src/freedreno/vulkan/tu_cmd_buffer.cc

index a419a40..49ae238 100644 (file)
@@ -2311,15 +2311,16 @@ tu_CmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,
 }
 
 VKAPI_ATTR void VKAPI_CALL
-tu_CmdBindIndexBuffer(VkCommandBuffer commandBuffer,
-                      VkBuffer buffer,
-                      VkDeviceSize offset,
-                      VkIndexType indexType)
+tu_CmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer,
+                          VkBuffer buffer,
+                          VkDeviceSize offset,
+                          VkDeviceSize size,
+                          VkIndexType indexType)
 {
    TU_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer);
    TU_FROM_HANDLE(tu_buffer, buf, buffer);
 
-
+   size = vk_buffer_range(&buf->vk, offset, size);
 
    uint32_t index_size, index_shift, restart_index;
 
@@ -2347,10 +2348,8 @@ tu_CmdBindIndexBuffer(VkCommandBuffer commandBuffer,
    if (cmd->state.index_size != index_size)
       tu_cs_emit_regs(&cmd->draw_cs, A6XX_PC_RESTART_INDEX(restart_index));
 
-   assert(buf->vk.size >= offset);
-
    cmd->state.index_va = buf->iova + offset;
-   cmd->state.max_index_count = (buf->vk.size - offset) >> index_shift;
+   cmd->state.max_index_count = size >> index_shift;
    cmd->state.index_size = index_size;
 }