[Mesa-dev] [PATCH 4/8] glsl_to_nir: skip ir_var_shader_shared variables
Timothy Arceri
tarceri at itsqueeze.com
Tue Apr 18 05:52:21 UTC 2017
From: Timothy Arceri <timothy.arceri at collabora.com>
These should be lowered away in GLSL IR but if we don't get dead
code to clean them up it causes issues in glsl_to_nir.
We wan't to drop as many GLSL IR opts in future as we can so this
makes glsl_to_nir just ignore the vars if it sees them.
In future we will want to just use the nir lowering pass that
Vulkan currently uses.
---
src/compiler/glsl/glsl_to_nir.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp
index 870d457..a6c0f66 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -301,20 +301,27 @@ constant_copy(ir_constant *ir, void *mem_ctx)
default:
unreachable("not reached");
}
return ret;
}
void
nir_visitor::visit(ir_variable *ir)
{
+ /* TODO: In future we should switch to using the NIR lowering pass but for
+ * now just ignore these variables as GLSL IR should have lowered them.
+ * Anything remaining are just dead vars that weren't cleaned up.
+ */
+ if (ir->data.mode == ir_var_shader_shared)
+ return;
+
nir_variable *var = ralloc(shader, nir_variable);
var->type = ir->type;
var->name = ralloc_strdup(var, ir->name);
var->data.read_only = ir->data.read_only;
var->data.centroid = ir->data.centroid;
var->data.sample = ir->data.sample;
var->data.patch = ir->data.patch;
var->data.invariant = ir->data.invariant;
var->data.location = ir->data.location;
--
2.9.3
More information about the mesa-dev
mailing list