Mesa (main): microsoft/spirv_to_dxil: Add a draw_id field to vertex_runtime_data

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 22 07:38:03 UTC 2022


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

Author: Boris Brezillon <boris.brezillon at collabora.com>
Date:   Wed Apr  6 01:24:33 2022 -0700

microsoft/spirv_to_dxil: Add a draw_id field to vertex_runtime_data

So we can support the draw_id system value.

Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15912>

---

 src/microsoft/spirv_to_dxil/spirv_to_dxil.c | 6 ++++++
 src/microsoft/spirv_to_dxil/spirv_to_dxil.h | 1 +
 2 files changed, 7 insertions(+)

diff --git a/src/microsoft/spirv_to_dxil/spirv_to_dxil.c b/src/microsoft/spirv_to_dxil/spirv_to_dxil.c
index 7539678072b..36a6e99f2f4 100644
--- a/src/microsoft/spirv_to_dxil/spirv_to_dxil.c
+++ b/src/microsoft/spirv_to_dxil/spirv_to_dxil.c
@@ -103,6 +103,9 @@ lower_shader_system_values(struct nir_builder *builder, nir_instr *instr,
    case nir_intrinsic_load_base_instance:
       offset = offsetof(struct dxil_spirv_vertex_runtime_data, base_instance);
       break;
+   case nir_intrinsic_load_draw_id:
+      offset = offsetof(struct dxil_spirv_vertex_runtime_data, draw_id);
+      break;
    default:
       return false;
    }
@@ -527,6 +530,9 @@ spirv_to_dxil(const uint32_t *words, size_t word_count,
       return false;
 
    struct spirv_to_nir_options spirv_opts = {
+      .caps = {
+         .draw_parameters = true,
+      },
       .ubo_addr_format = nir_address_format_32bit_index_offset,
       .ssbo_addr_format = nir_address_format_32bit_index_offset,
       .shared_addr_format = nir_address_format_32bit_offset_as_64bit,
diff --git a/src/microsoft/spirv_to_dxil/spirv_to_dxil.h b/src/microsoft/spirv_to_dxil/spirv_to_dxil.h
index cad69ef425c..8cb6ab9de48 100644
--- a/src/microsoft/spirv_to_dxil/spirv_to_dxil.h
+++ b/src/microsoft/spirv_to_dxil/spirv_to_dxil.h
@@ -109,6 +109,7 @@ struct dxil_spirv_vertex_runtime_data {
          uint16_t z_flip_mask;
       };
    };
+   uint32_t draw_id;
 };
 
 enum dxil_spirv_yz_flip_mode {



More information about the mesa-commit mailing list