mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 11:28:05 +02:00
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:92e1981a80("radv: Remove PSIZ output when it isn't needed.") Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13378> (cherry picked from commit61be0bd34b)
This commit is contained in:
parent
7456331987
commit
983cccf757
2 changed files with 5 additions and 4 deletions
|
|
@ -886,7 +886,7 @@
|
|||
"description": "radv: fix removing PSIZ when it's not emitted by the last VGT stage",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "92e1981a8005c0ca7f48f38ddf8ff2b99ce95e7e"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue