mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-22 17:10:32 +01:00
i965: Implement gl_InvocationID.
It's stored in bits 31:27 of g1 (along with the URB handles). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
This commit is contained in:
parent
c5ae34f38f
commit
48c76eae8e
1 changed files with 13 additions and 0 deletions
|
|
@ -189,6 +189,18 @@ emit_system_values_block(nir_block *block, void *void_visitor)
|
|||
*reg = *v->emit_vs_system_value(SYSTEM_VALUE_INSTANCE_ID);
|
||||
break;
|
||||
|
||||
case nir_intrinsic_load_invocation_id:
|
||||
assert(v->stage == MESA_SHADER_GEOMETRY);
|
||||
reg = &v->nir_system_values[SYSTEM_VALUE_INVOCATION_ID];
|
||||
if (reg->file == BAD_FILE) {
|
||||
const fs_builder abld = v->bld.annotate("gl_InvocationID", NULL);
|
||||
fs_reg g1(retype(brw_vec8_grf(1, 0), BRW_REGISTER_TYPE_UD));
|
||||
fs_reg iid = abld.vgrf(BRW_REGISTER_TYPE_UD, 1);
|
||||
abld.SHR(iid, g1, fs_reg(27u));
|
||||
*reg = iid;
|
||||
}
|
||||
break;
|
||||
|
||||
case nir_intrinsic_load_sample_pos:
|
||||
assert(v->stage == MESA_SHADER_FRAGMENT);
|
||||
reg = &v->nir_system_values[SYSTEM_VALUE_SAMPLE_POS];
|
||||
|
|
@ -1378,6 +1390,7 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
|||
case nir_intrinsic_load_vertex_id_zero_base:
|
||||
case nir_intrinsic_load_base_vertex:
|
||||
case nir_intrinsic_load_instance_id:
|
||||
case nir_intrinsic_load_invocation_id:
|
||||
case nir_intrinsic_load_sample_mask_in:
|
||||
case nir_intrinsic_load_sample_id: {
|
||||
gl_system_value sv = nir_system_value_from_intrinsic(instr->intrinsic);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue