i965: Implement nir_intrinsic_shader_clock
v2: - Add a few const qualifiers for good measure. - Drop unneeded retype()s (Matt) - Convert timestamp to SIMD8/16, as fs_visitor::get_timestamp() returns SIMD4 (Connor) v3: - Remove unneeded temporary + MOV (Connor) Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
committed by
Emil Velikov
parent
6a15517242
commit
4379ca22f1
@@ -1332,6 +1332,15 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_shader_clock: {
|
||||
/* We cannot do anything if there is an event, so ignore it for now */
|
||||
fs_reg shader_clock = get_timestamp(bld);
|
||||
const fs_reg srcs[] = { shader_clock.set_smear(0), shader_clock.set_smear(1) };
|
||||
|
||||
bld.LOAD_PAYLOAD(dest, srcs, ARRAY_SIZE(srcs), 0);
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_image_size: {
|
||||
/* Get the referenced image variable and type. */
|
||||
const nir_variable *var = instr->variables[0]->var;
|
||||
|
||||
@@ -808,6 +808,16 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_shader_clock: {
|
||||
/* We cannot do anything if there is an event, so ignore it for now */
|
||||
const src_reg shader_clock = get_timestamp();
|
||||
const enum brw_reg_type type = brw_type_for_base_type(glsl_type::uvec2_type);
|
||||
|
||||
dest = get_nir_dest(instr->dest, type);
|
||||
emit(MOV(dest, shader_clock));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
unreachable("Unknown intrinsic");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user