radeonsi: skip instance_count==0 draws on <= GFX9

This changes seems to prevent a hang, at least on Renoir chips.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4866
Cc: mesa-stable
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11356>
(cherry picked from commit 66dbd16f38)
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2021-06-14 09:53:45 +02:00 committed by Eric Engestrom
parent aaee162781
commit 9f5576771a
2 changed files with 4 additions and 2 deletions

View file

@ -139,7 +139,7 @@
"description": "radeonsi: skip instance_count==0 draws on <= GFX9",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},

View file

@ -1755,8 +1755,10 @@ static void si_draw_vbo(struct pipe_context *ctx,
/* GFX6-GFX7 treat instance_count==0 as instance_count==1. There is
* no workaround for indirect draws, but we can at least skip
* direct draws.
* 'instance_count == 0' seems to be problematic on Renoir chips (#4866),
* so simplify the condition and drop these draws for all <= GFX9 chips.
*/
if (GFX_VERSION <= GFX7 && unlikely(!indirect && !instance_count))
if (GFX_VERSION <= GFX9 && unlikely(!indirect && !instance_count))
return;
struct si_shader_selector *vs = sctx->shader.vs.cso;