mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 15:40:11 +01:00
nak/nir: Emit nir_intrinsic_ald_nv directly for system values
These are simple enough that running them through the lowering code really isn't gaining us anything. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28377>
This commit is contained in:
parent
2b4095d086
commit
9cce4e6364
1 changed files with 14 additions and 9 deletions
|
|
@ -433,20 +433,25 @@ nak_nir_lower_system_value_intrin(nir_builder *b, nir_intrinsic_instr *intrin,
|
|||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_load_primitive_id: {
|
||||
assert(b->shader->info.stage == MESA_SHADER_TESS_CTRL ||
|
||||
case nir_intrinsic_load_primitive_id:
|
||||
case nir_intrinsic_load_instance_id:
|
||||
case nir_intrinsic_load_vertex_id: {
|
||||
assert(b->shader->info.stage != MESA_SHADER_VERTEX ||
|
||||
b->shader->info.stage != MESA_SHADER_TESS_CTRL ||
|
||||
b->shader->info.stage == MESA_SHADER_TESS_EVAL ||
|
||||
b->shader->info.stage == MESA_SHADER_GEOMETRY);
|
||||
val = nir_load_per_vertex_input(b, 1, 32, nir_imm_int(b, 0),
|
||||
nir_imm_int(b, 0),
|
||||
.base = NAK_ATTR_PRIMITIVE_ID,
|
||||
.dest_type = nir_type_int32);
|
||||
const gl_system_value sysval =
|
||||
nir_system_value_from_intrinsic(intrin->intrinsic);
|
||||
const uint32_t addr = nak_sysval_attr_addr(sysval);
|
||||
val = nir_ald_nv(b, 1, nir_imm_int(b, 0), nir_imm_int(b, 0),
|
||||
.base = addr, .flags = 0,
|
||||
.range_base = addr, .range = 4,
|
||||
.access = ACCESS_CAN_REORDER);
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_load_front_face:
|
||||
case nir_intrinsic_load_instance_id:
|
||||
case nir_intrinsic_load_vertex_id: {
|
||||
case nir_intrinsic_load_front_face: {
|
||||
assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
|
||||
const gl_system_value sysval =
|
||||
nir_system_value_from_intrinsic(intrin->intrinsic);
|
||||
const uint32_t addr = nak_sysval_attr_addr(sysval);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue