Mesa (main): radv: fix removing PSIZ when it's not emitted by the last VGT stage
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Oct 18 08:34:46 UTC 2021
Module: Mesa
Branch: main
Commit: 61be0bd34b34617e52211280878e71d9d1f174eb
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=61be0bd34b34617e52211280878e71d9d1f174eb
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Fri Oct 15 14:52:13 2021 +0200
radv: fix removing PSIZ when it's not emitted by the last VGT stage
This dereferences a NULL pointer and crash many tests with Zink.
Fixes: 92e1981a800 ("radv: Remove PSIZ output when it isn't needed.")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13378>
---
src/amd/vulkan/radv_pipeline.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 5cf991dd93d..44ae5d919ea 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -2390,10 +2390,11 @@ radv_link_shaders(struct radv_pipeline *pipeline,
(info->stage == MESA_SHADER_TESS_EVAL && info->tess.point_mode) ||
(info->stage == MESA_SHADER_GEOMETRY && info->gs.output_primitive == GL_POINTS));
- if (!next_stage_needs_psiz && !topology_uses_psiz) {
- /* Change PSIZ to a global variable which allows it to be DCE'd. */
- nir_variable *psiz_var =
+ nir_variable *psiz_var =
nir_find_variable_with_location(ordered_shaders[i], nir_var_shader_out, VARYING_SLOT_PSIZ);
+
+ if (!next_stage_needs_psiz && !topology_uses_psiz && psiz_var) {
+ /* Change PSIZ to a global variable which allows it to be DCE'd. */
psiz_var->data.location = 0;
psiz_var->data.mode = nir_var_shader_temp;
More information about the mesa-commit
mailing list