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 <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8971>
This commit is contained in:
Mike Blumenkrantz 2020-08-19 14:50:47 -04:00 committed by Marge Bot
parent 8300bc1f16
commit c28bc38f94

View file

@ -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;