aco/sched: treat p_dual_src_export_gfx11 like export
This prevents the scheduler from moving the dual source export above mrtz
export, which caused hangs.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10173
Cc: mesa-stable
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26317>
(cherry picked from commit 0a5d3ac8d2
)
This commit is contained in:

committed by
Eric Engestrom

parent
0f94431922
commit
ab01f44513
@@ -264,7 +264,7 @@
|
||||
"description": "aco/sched: treat p_dual_src_export_gfx11 like export",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
@@ -596,13 +596,15 @@ perform_hazard_query(hazard_query* query, Instruction* instr, bool upwards)
|
||||
return hazard_fail_exec;
|
||||
|
||||
/* Don't move exports so that they stay closer together.
|
||||
* Since GFX11, export order matters. MRTZ must come first,
|
||||
* then color exports sorted from first to last.
|
||||
* Also, with Primitive Ordered Pixel Shading on GFX11+, the `done` export must not be moved
|
||||
* above the memory accesses before the queue family scope (more precisely, fragment interlock
|
||||
* scope, but it's not available in ACO) release barrier that is expected to be inserted before
|
||||
* the export, as well as before any `s_wait_event export_ready` which enters the ordered
|
||||
* section, because the `done` export exits the ordered section.
|
||||
*/
|
||||
if (instr->isEXP())
|
||||
if (instr->isEXP() || instr->opcode == aco_opcode::p_dual_src_export_gfx11)
|
||||
return hazard_fail_export;
|
||||
|
||||
/* don't move non-reorderable instructions */
|
||||
|
Reference in New Issue
Block a user