From c28bc38f9401e39cc4b494a28a2527055c2ce15a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 19 Aug 2020 14:50:47 -0400 Subject: [PATCH] zink: add handling for ARB_shader_draw_parameters variables in ntv * gl_DrawID * gl_BaseVertex * gl_BaseInstance (was already semi-handled) Reviewed-by: Dave Airlie Part-of: --- .../drivers/zink/nir_to_spirv/nir_to_spirv.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 9cd33915084..e102e28e39c 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -78,7 +78,7 @@ struct ntv_context { unsigned char *shader_slot_map; unsigned char shader_slots_reserved; - SpvId front_face_var, instance_id_var, vertex_id_var, base_instance_var, + SpvId front_face_var, instance_id_var, vertex_id_var, primitive_id_var, invocation_id_var, // geometry sample_mask_type, sample_id_var, sample_pos_var, sample_mask_in_var, tess_patch_vertices_in, tess_coord_var, // tess @@ -86,7 +86,8 @@ struct ntv_context { workgroup_id_var, num_workgroups_var, local_invocation_id_var, global_invocation_id_var, local_invocation_index_var, helper_invocation_var, - shared_block_var; + shared_block_var, + base_vertex_var, base_instance_var, draw_id_var; }; static SpvId @@ -2620,6 +2621,14 @@ emit_intrinsic(struct ntv_context *ctx, nir_intrinsic_instr *intr) emit_load_uint_input(ctx, intr, &ctx->instance_id_var, "gl_InstanceId", SpvBuiltInInstanceIndex); break; + case nir_intrinsic_load_base_vertex: + emit_load_uint_input(ctx, intr, &ctx->base_vertex_var, "gl_BaseVertex", SpvBuiltInBaseVertex); + break; + + case nir_intrinsic_load_draw_id: + emit_load_uint_input(ctx, intr, &ctx->draw_id_var, "gl_DrawID", SpvBuiltInDrawIndex); + break; + case nir_intrinsic_load_vertex_id: emit_load_uint_input(ctx, intr, &ctx->vertex_id_var, "gl_VertexId", SpvBuiltInVertexIndex); break;