radeonsi: check sctx->tess_rings is valid before using it

Fixes: c89ca3b47f ("radeonsi: change si_emit_derived_tess_state into a state atom")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10015

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26190>
(cherry picked from commit 945288ffae)
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2023-11-14 13:41:47 +01:00 committed by Eric Engestrom
parent dd56f591e5
commit 3ed7b95a55
2 changed files with 11 additions and 3 deletions

View file

@ -154,7 +154,7 @@
"description": "radeonsi: check sctx->tess_rings is valid before using it",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "c89ca3b47f11ce2c2e6953d37590021e89c1d119",
"notes": null

View file

@ -4274,8 +4274,16 @@ static void si_set_patch_vertices(struct pipe_context *ctx, uint8_t patch_vertic
if (sctx->patch_vertices != patch_vertices) {
sctx->patch_vertices = patch_vertices;
si_update_tess_in_out_patch_vertices(sctx);
if (sctx->shader.tcs.current)
si_update_tess_io_layout_state(sctx);
if (sctx->shader.tcs.current) {
/* Update the io layout now if possible,
* otherwise make sure it's done by si_update_shaders.
*/
if (sctx->tess_rings)
si_update_tess_io_layout_state(sctx);
else
sctx->do_update_shaders = true;
}
}
}