mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
pan/midgard: Fix recursive csel scheduling
Corner case causing invalid scheduling on shaders with nested csels, i.e. GLSL code resembling: (foo ? bool1 : bool2) ? x : y By explicitly disallowing csels this is fixed. Fixes INSTR_INVALID_ENC on a glamor shader (noticeable with slowdown and visual corruption when scrolling "too far" on GTK apps). Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3463> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3463>
This commit is contained in:
parent
564a782ff7
commit
4af8d5b064
1 changed files with 4 additions and 0 deletions
|
|
@ -669,6 +669,10 @@ mir_comparison_mobile(
|
|||
if (instructions[i]->type != TAG_ALU_4)
|
||||
return ~0;
|
||||
|
||||
/* If it would itself require a condition, that's recursive */
|
||||
if (OP_IS_CSEL(instructions[i]->alu.op))
|
||||
return ~0;
|
||||
|
||||
/* We'll need to rewrite to .w but that doesn't work for vector
|
||||
* ops that don't replicate (ball/bany), so bail there */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue