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 {