[Mesa-dev] [PATCH v4 069/129] move lower_deref_instrs

Jason Ekstrand jason at jlekstrand.net
Fri Jun 1 05:03:59 UTC 2018


From: Rob Clark <robdclark at gmail.com>

Signed-off-by: Rob Clark <robdclark at gmail.com>
---
 src/amd/vulkan/radv_pipeline.c            | 2 ++
 src/amd/vulkan/radv_shader.c              | 2 --
 src/mesa/state_tracker/st_glsl_to_nir.cpp | 3 +--
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 0391147..96f024a 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -2033,6 +2033,8 @@ void radv_create_shaders(struct radv_pipeline *pipeline,
 			if (i != last)
 				mask = mask | nir_var_shader_out;
 
+			NIR_PASS_V(nir[i], nir_lower_deref_instrs, ~0);
+
 			if (!(flags & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)) {
 				nir_lower_io_to_scalar_early(nir[i], mask);
 				radv_optimize_nir(nir[i], false);
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index 5897b2a..324fcc4 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -176,8 +176,6 @@ radv_shader_compile_to_nir(struct radv_device *device,
 		assert(exec_list_length(&nir->functions) == 1);
 		struct exec_node *node = exec_list_get_head(&nir->functions);
 		entry_point = exec_node_data(nir_function, node, node);
-
-		NIR_PASS_V(nir, nir_lower_deref_instrs, ~0);
 	} else {
 		uint32_t *spirv = (uint32_t *) module->data;
 		assert(module->size % 4 == 0);
diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index aa8fb58..c09e841 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -580,8 +580,6 @@ st_nir_get_mesa_program(struct gl_context *ctx,
 
    nir_shader *nir = st_glsl_to_nir(st, prog, shader_program, shader->Stage);
 
-   nir_lower_deref_instrs(nir, (nir_lower_deref_flags)~0);
-
    set_st_program(prog, shader_program, nir);
    prog->nir = nir;
 }
@@ -653,6 +651,7 @@ st_link_nir(struct gl_context *ctx,
          mask = (nir_variable_mode)(mask | nir_var_shader_out);
 
       nir_shader *nir = shader->Program->nir;
+      NIR_PASS_V(nir, nir_lower_deref_instrs, (nir_lower_deref_flags)~0);
       NIR_PASS_V(nir, nir_lower_io_to_scalar_early, mask);
       st_nir_opts(nir);
    }
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list