anv: fix generated draws gl_DrawID with more than 8192 indirect draws
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Thu, 21 Sep 2023 20:27:46 +0000 (23:27 +0300)
committerMarge Bot <emma+marge@anholt.net>
Fri, 20 Oct 2023 13:07:53 +0000 (13:07 +0000)
This applies only to Gfx9.

We're writting out of bounds to a wrong location.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 1d9cf8f381 ("anv: add gfx9 generated draw support")
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Tested-by: Felix DeGrood <felix.j.degrood@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25361>

src/intel/vulkan/shaders/gfx9_generated_draws.glsl

index b9624c9..265b100 100644 (file)
@@ -71,7 +71,7 @@ void main()
             }
             if (uses_drawid) {
                uint64_t draw_idx_addr = draw_id_addr + 4 * item_idx;
-               draw_ids[draw_id] = draw_id;
+               draw_ids[item_idx] = draw_id;
                write_VERTEX_BUFFER_STATE(cmd_idx,
                                          mocs,
                                          32,
@@ -117,7 +117,7 @@ void main()
             }
             if (uses_drawid) {
                uint64_t draw_idx_addr = draw_id_addr + 4 * item_idx;
-               draw_ids[draw_id] = draw_id;
+               draw_ids[item_idx] = draw_id;
                write_VERTEX_BUFFER_STATE(cmd_idx,
                                          mocs,
                                          32,