summaryrefslogtreecommitdiffstats
path: root/src/amd/vulkan/radv_pipeline.c
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2018-02-15 21:24:35 +0100
committerBas Nieuwenhuizen <[email protected]>2018-02-15 23:45:59 +0100
commit05d84ed68add9e6adfcc602a274405e04226c1b7 (patch)
treef33e32c80da48b53e679b7f022df7fb471dcf643 /src/amd/vulkan/radv_pipeline.c
parent2ab1ce30c4543fb4091795cbf6a5526e74c9e4aa (diff)
radv: Always lower indirect derefs after nir_lower_global_vars_to_local.
Otherwise new local variables can cause hangs on vega. CC: <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105098 Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_pipeline.c')
-rw-r--r--src/amd/vulkan/radv_pipeline.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 8f872e7c149..0d1958fc935 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -1525,9 +1525,16 @@ radv_link_shaders(struct radv_pipeline *pipeline, nir_shader **shaders)
ordered_shaders[i - 1]);
if (progress) {
- nir_lower_global_vars_to_local(ordered_shaders[i]);
+ if (nir_lower_global_vars_to_local(ordered_shaders[i])) {
+ radv_lower_indirect_derefs(ordered_shaders[i],
+ pipeline->device->physical_device);
+ }
radv_optimize_nir(ordered_shaders[i]);
- nir_lower_global_vars_to_local(ordered_shaders[i - 1]);
+
+ if (nir_lower_global_vars_to_local(ordered_shaders[i - 1])) {
+ radv_lower_indirect_derefs(ordered_shaders[i - 1],
+ pipeline->device->physical_device);
+ }
radv_optimize_nir(ordered_shaders[i - 1]);
}
}