diff options
author | Bas Nieuwenhuizen <[email protected]> | 2018-02-15 21:24:35 +0100 |
---|---|---|
committer | Bas Nieuwenhuizen <[email protected]> | 2018-02-15 23:45:59 +0100 |
commit | 05d84ed68add9e6adfcc602a274405e04226c1b7 (patch) | |
tree | f33e32c80da48b53e679b7f022df7fb471dcf643 /src/amd/vulkan/radv_pipeline.c | |
parent | 2ab1ce30c4543fb4091795cbf6a5526e74c9e4aa (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.c | 11 |
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]); } } |