Module: Mesa
Branch: main
Commit: 3b5615500af2d96a3689445e6c2b88bc479eab0b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b5615500af2d96a3689445e6c2b88bc479eab0b

Author: Iván Briano <ivan.bri...@intel.com>
Date:   Tue Sep 19 17:17:49 2023 -0700

anv: allow NULL index buffers

Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26842>

---

 src/intel/vulkan/genX_cmd_buffer.c | 2 +-
 src/intel/vulkan/genX_gfx_state.c  | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/intel/vulkan/genX_cmd_buffer.c 
b/src/intel/vulkan/genX_cmd_buffer.c
index 469a15943e0..600f5be96a6 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -8408,7 +8408,7 @@ void genX(CmdBindIndexBuffer2KHR)(
       cmd_buffer->state.gfx.index_buffer = buffer;
       cmd_buffer->state.gfx.index_type = vk_to_intel_index_type(indexType);
       cmd_buffer->state.gfx.index_offset = offset;
-      cmd_buffer->state.gfx.index_size = vk_buffer_range(&buffer->vk, offset, 
size);
+      cmd_buffer->state.gfx.index_size = buffer ? vk_buffer_range(&buffer->vk, 
offset, size) : 0;
       cmd_buffer->state.gfx.dirty |= ANV_CMD_DIRTY_INDEX_BUFFER;
    }
 }
diff --git a/src/intel/vulkan/genX_gfx_state.c 
b/src/intel/vulkan/genX_gfx_state.c
index 21f1aa005b2..d3fca497893 100644
--- a/src/intel/vulkan/genX_gfx_state.c
+++ b/src/intel/vulkan/genX_gfx_state.c
@@ -1821,13 +1821,15 @@ cmd_buffer_gfx_state_emission(struct anv_cmd_buffer 
*cmd_buffer)
       anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_INDEX_BUFFER), ib) {
          ib.IndexFormat           = gfx->index_type;
          ib.MOCS                  = anv_mocs(cmd_buffer->device,
-                                             buffer->address.bo,
+                                             buffer ? buffer->address.bo : 
NULL,
                                              ISL_SURF_USAGE_INDEX_BUFFER_BIT);
 #if GFX_VER >= 12
          ib.L3BypassDisable       = true;
 #endif
-         ib.BufferStartingAddress = anv_address_add(buffer->address, offset);
-         ib.BufferSize            = gfx->index_size;
+         if (buffer) {
+            ib.BufferStartingAddress = anv_address_add(buffer->address, 
offset);
+            ib.BufferSize            = gfx->index_size;
+         }
       }
    }
 

Reply via email to