summaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2016-05-12 23:53:13 -0700
committerKenneth Graunke <[email protected]>2016-05-15 23:50:28 -0700
commit6d65b0c6dc0ef4fad319129fea5fd7b4ad940bec (patch)
tree35a33c5f1422529cfb18da09e50afbe70477521d /src/compiler
parentd4d7e1516b4f14b65192ae856a44a2c10788c9fe (diff)
nir: Add a nir->info.uses_interp_var_at_offset flag.
I've added this to nir_gather_info(), but also to glsl_to_nir() as a temporary measure, since the i965 GL driver today doesn't use nir_gather_info() yet. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/nir/glsl_to_nir.cpp3
-rw-r--r--src/compiler/nir/nir.h3
-rw-r--r--src/compiler/nir/nir_gather_info.c4
3 files changed, 10 insertions, 0 deletions
diff --git a/src/compiler/nir/glsl_to_nir.cpp b/src/compiler/nir/glsl_to_nir.cpp
index 8a256506f8f..d28fe41ad84 100644
--- a/src/compiler/nir/glsl_to_nir.cpp
+++ b/src/compiler/nir/glsl_to_nir.cpp
@@ -1277,6 +1277,9 @@ nir_visitor::visit(ir_expression *ir)
intrin->intrinsic == nir_intrinsic_interp_var_at_sample)
intrin->src[0] = nir_src_for_ssa(evaluate_rvalue(ir->operands[1]));
+ if (intrin->intrinsic == nir_intrinsic_interp_var_at_offset)
+ shader->info.uses_interp_var_at_offset = true;
+
unsigned bit_size = glsl_get_bit_size(deref->type);
add_instr(&intrin->instr, deref->type->vector_elements, bit_size);
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 2227910eae1..cb9d44abafb 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -1716,6 +1716,9 @@ typedef struct nir_shader_info {
/* Whether or not this shader ever uses textureGather() */
bool uses_texture_gather;
+ /** Whether or not this shader uses nir_intrinsic_interp_var_at_offset */
+ bool uses_interp_var_at_offset;
+
/* Whether or not this shader uses the gl_ClipDistance output */
bool uses_clip_distance_out;
diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c
index 89a6302d4fc..7900fd1ef55 100644
--- a/src/compiler/nir/nir_gather_info.c
+++ b/src/compiler/nir/nir_gather_info.c
@@ -56,6 +56,10 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader)
shader->info.gs.uses_end_primitive = 1;
break;
+ case nir_intrinsic_interp_var_at_offset:
+ shader->info.uses_interp_var_at_offset = 1;
+ break;
+
default:
break;
}