mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
nir: Move system value -> intrinsic mapping into nir.c
This way they're right next to the map going the other direction. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
de7ffdb383
commit
d513388c8a
3 changed files with 40 additions and 40 deletions
|
|
@ -1461,6 +1461,44 @@ nir_index_instrs(nir_function_impl *impl)
|
|||
return index;
|
||||
}
|
||||
|
||||
nir_intrinsic_op
|
||||
nir_intrinsic_from_system_value(gl_system_value val)
|
||||
{
|
||||
switch (val) {
|
||||
case SYSTEM_VALUE_VERTEX_ID:
|
||||
return nir_intrinsic_load_vertex_id;
|
||||
case SYSTEM_VALUE_INSTANCE_ID:
|
||||
return nir_intrinsic_load_instance_id;
|
||||
case SYSTEM_VALUE_VERTEX_ID_ZERO_BASE:
|
||||
return nir_intrinsic_load_vertex_id_zero_base;
|
||||
case SYSTEM_VALUE_BASE_VERTEX:
|
||||
return nir_intrinsic_load_base_vertex;
|
||||
case SYSTEM_VALUE_INVOCATION_ID:
|
||||
return nir_intrinsic_load_invocation_id;
|
||||
case SYSTEM_VALUE_FRONT_FACE:
|
||||
return nir_intrinsic_load_front_face;
|
||||
case SYSTEM_VALUE_SAMPLE_ID:
|
||||
return nir_intrinsic_load_sample_id;
|
||||
case SYSTEM_VALUE_SAMPLE_POS:
|
||||
return nir_intrinsic_load_sample_pos;
|
||||
case SYSTEM_VALUE_SAMPLE_MASK_IN:
|
||||
return nir_intrinsic_load_sample_mask_in;
|
||||
case SYSTEM_VALUE_LOCAL_INVOCATION_ID:
|
||||
return nir_intrinsic_load_local_invocation_id;
|
||||
case SYSTEM_VALUE_WORK_GROUP_ID:
|
||||
return nir_intrinsic_load_work_group_id;
|
||||
/* FINISHME: Add tessellation intrinsics.
|
||||
case SYSTEM_VALUE_TESS_COORD:
|
||||
case SYSTEM_VALUE_VERTICES_IN:
|
||||
case SYSTEM_VALUE_PRIMITIVE_ID:
|
||||
case SYSTEM_VALUE_TESS_LEVEL_OUTER:
|
||||
case SYSTEM_VALUE_TESS_LEVEL_INNER:
|
||||
*/
|
||||
default:
|
||||
unreachable("system value does not directly correspond to intrinsic");
|
||||
}
|
||||
}
|
||||
|
||||
gl_system_value
|
||||
nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1924,6 +1924,7 @@ bool nir_opt_undef(nir_shader *shader);
|
|||
|
||||
void nir_sweep(nir_shader *shader);
|
||||
|
||||
nir_intrinsic_op nir_intrinsic_from_system_value(gl_system_value val);
|
||||
gl_system_value nir_system_value_from_intrinsic(nir_intrinsic_op intrin);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -40,46 +40,7 @@ convert_instr(nir_intrinsic_instr *instr)
|
|||
|
||||
void *mem_ctx = ralloc_parent(instr);
|
||||
|
||||
nir_intrinsic_op op;
|
||||
|
||||
switch (var->data.location) {
|
||||
case SYSTEM_VALUE_FRONT_FACE:
|
||||
op = nir_intrinsic_load_front_face;
|
||||
break;
|
||||
case SYSTEM_VALUE_VERTEX_ID:
|
||||
op = nir_intrinsic_load_vertex_id;
|
||||
break;
|
||||
case SYSTEM_VALUE_VERTEX_ID_ZERO_BASE:
|
||||
op = nir_intrinsic_load_vertex_id_zero_base;
|
||||
break;
|
||||
case SYSTEM_VALUE_BASE_VERTEX:
|
||||
op = nir_intrinsic_load_base_vertex;
|
||||
break;
|
||||
case SYSTEM_VALUE_INSTANCE_ID:
|
||||
op = nir_intrinsic_load_instance_id;
|
||||
break;
|
||||
case SYSTEM_VALUE_SAMPLE_ID:
|
||||
op = nir_intrinsic_load_sample_id;
|
||||
break;
|
||||
case SYSTEM_VALUE_SAMPLE_POS:
|
||||
op = nir_intrinsic_load_sample_pos;
|
||||
break;
|
||||
case SYSTEM_VALUE_SAMPLE_MASK_IN:
|
||||
op = nir_intrinsic_load_sample_mask_in;
|
||||
break;
|
||||
case SYSTEM_VALUE_INVOCATION_ID:
|
||||
op = nir_intrinsic_load_invocation_id;
|
||||
break;
|
||||
case SYSTEM_VALUE_LOCAL_INVOCATION_ID:
|
||||
op = nir_intrinsic_load_local_invocation_id;
|
||||
break;
|
||||
case SYSTEM_VALUE_WORK_GROUP_ID:
|
||||
op = nir_intrinsic_load_work_group_id;
|
||||
break;
|
||||
default:
|
||||
unreachable("not reached");
|
||||
}
|
||||
|
||||
nir_intrinsic_op op = nir_intrinsic_from_system_value(var->data.location);
|
||||
nir_intrinsic_instr *new_instr = nir_intrinsic_instr_create(mem_ctx, op);
|
||||
|
||||
if (instr->dest.is_ssa) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue