From 56238305e5474d749881006622c5ee65dee4fb40 Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Thu, 27 Aug 2015 23:27:50 -0400 Subject: [PATCH] nir: convert glsl imageSamples into a new intrinsic Signed-off-by: Ilia Mirkin Reviewed-by: Kenneth Graunke --- src/glsl/nir/glsl_to_nir.cpp | 6 +++++- src/glsl/nir/nir_intrinsics.h | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/glsl/nir/glsl_to_nir.cpp index bf78b42..944f746 100644 --- a/src/glsl/nir/glsl_to_nir.cpp +++ b/src/glsl/nir/glsl_to_nir.cpp @@ -644,6 +644,8 @@ nir_visitor::visit(ir_call *ir) op = nir_intrinsic_memory_barrier; } else if (strcmp(ir->callee_name(), "__intrinsic_image_size") == 0) { op = nir_intrinsic_image_size; + } else if (strcmp(ir->callee_name(), "__intrinsic_image_samples") == 0) { + op = nir_intrinsic_image_samples; } else { unreachable("not reached"); } @@ -670,6 +672,7 @@ nir_visitor::visit(ir_call *ir) case nir_intrinsic_image_atomic_xor: case nir_intrinsic_image_atomic_exchange: case nir_intrinsic_image_atomic_comp_swap: + case nir_intrinsic_image_samples: case nir_intrinsic_image_size: { nir_ssa_undef_instr *instr_undef = nir_ssa_undef_instr_create(shader, 1); @@ -693,7 +696,8 @@ nir_visitor::visit(ir_call *ir) info->dest_components, NULL); } - if (op == nir_intrinsic_image_size) + if (op == nir_intrinsic_image_size || + op == nir_intrinsic_image_samples) break; /* Set the address argument, extending the coordinate vector to four diff --git a/src/glsl/nir/nir_intrinsics.h b/src/glsl/nir/nir_intrinsics.h index ed309b6..07dd5cf 100644 --- a/src/glsl/nir/nir_intrinsics.h +++ b/src/glsl/nir/nir_intrinsics.h @@ -125,6 +125,8 @@ INTRINSIC(image_atomic_exchange, 3, ARR(4, 1, 1), true, 1, 1, 0, 0) INTRINSIC(image_atomic_comp_swap, 4, ARR(4, 1, 1, 1), true, 1, 1, 0, 0) INTRINSIC(image_size, 0, ARR(), true, 4, 1, 0, NIR_INTRINSIC_CAN_ELIMINATE | NIR_INTRINSIC_CAN_REORDER) +INTRINSIC(image_samples, 0, ARR(), true, 1, 1, 0, + NIR_INTRINSIC_CAN_ELIMINATE | NIR_INTRINSIC_CAN_REORDER) #define SYSTEM_VALUE(name, components) \ INTRINSIC(load_##name, 0, ARR(), true, components, 0, 0, \ -- 2.7.4