From: Rob Clark Date: Thu, 17 May 2018 14:37:37 +0000 (-0400) Subject: move lower_deref_instrs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d143f6c8562e930562fc4902c1bf0013901cecf9;p=mesa.git move lower_deref_instrs Signed-off-by: Rob Clark Acked-by: Rob Clark Acked-by: Bas Nieuwenhuizen Acked-by: Dave Airlie Reviewed-by: Kenneth Graunke --- diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 1f01d2ff4d6..1609b800208 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -2034,6 +2034,8 @@ void radv_create_shaders(struct radv_pipeline *pipeline, nir[i] = nir_shader_clone(NULL, nir[i]); } + NIR_PASS_V(nir[i], nir_lower_deref_instrs, ~0); + if (first != last) { nir_variable_mode mask = 0; diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 147092511de..a0069de49d0 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -177,8 +177,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); @@ -253,8 +251,6 @@ radv_shader_compile_to_nir(struct radv_device *device, assert(exec_list_length(&nir->functions) == 1); entry_point->name = ralloc_strdup(entry_point, "main"); - NIR_PASS_V(nir, nir_lower_deref_instrs, ~0); - /* Make sure we lower constant initializers on output variables so that * nir_remove_dead_variables below sees the corresponding stores */ diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp index 57db63defd6..e7ef80cd61b 100644 --- a/src/mesa/state_tracker/st_glsl_to_nir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp @@ -589,8 +589,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; } @@ -676,6 +674,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, is_scalar[i]); }