From: Boyan Ding Date: Wed, 12 Apr 2017 13:14:22 +0000 (+0800) Subject: nir: Destination component count of shader_clock intrinsic is 2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ff29f488d4a2d05cdefbca7d675c479b2a1780a0;p=mesa.git nir: Destination component count of shader_clock intrinsic is 2 This fixes the following error when using ARB_shader_clock on i965: vec1 32 ssa_0 = intrinsic shader_clock () () () intrinsic store_var (ssa_0) (clock_retval) (3) /* wrmask=xy */ error: src->ssa->num_components == num_components (nir/nir_validate.c:204) Signed-off-by: Boyan Ding Reviewed-by: Jason Ekstrand Cc: mesa-stable@lists.freedesktop.org --- diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index f0557f985bf..870d4576818 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -930,7 +930,8 @@ nir_visitor::visit(ir_call *ir) nir_builder_instr_insert(&b, &instr->instr); break; case nir_intrinsic_shader_clock: - nir_ssa_dest_init(&instr->instr, &instr->dest, 1, 32, NULL); + nir_ssa_dest_init(&instr->instr, &instr->dest, 2, 32, NULL); + instr->num_components = 2; nir_builder_instr_insert(&b, &instr->instr); break; case nir_intrinsic_store_ssbo: { diff --git a/src/compiler/nir/nir_intrinsics.h b/src/compiler/nir/nir_intrinsics.h index 105c56f7596..3a519a73ddd 100644 --- a/src/compiler/nir/nir_intrinsics.h +++ b/src/compiler/nir/nir_intrinsics.h @@ -91,7 +91,7 @@ BARRIER(memory_barrier) * The latter can be used as code motion barrier, which is currently not * feasible with NIR. */ -INTRINSIC(shader_clock, 0, ARR(0), true, 1, 0, 0, xx, xx, xx, NIR_INTRINSIC_CAN_ELIMINATE) +INTRINSIC(shader_clock, 0, ARR(0), true, 2, 0, 0, xx, xx, xx, NIR_INTRINSIC_CAN_ELIMINATE) /* * Memory barrier with semantics analogous to the compute shader