pan/bi: Don't reorder image loads across stores

Fixes flaking in
dEQP-GLES31.functional.image_load_store.cube.qualifiers.volatile_r32i due to
image reads being moved past a BARRIER.

To make this more robust/optimal, we probably need scheduling information
(coherent/volatile/etc) added to instructions like ACO does. That's left for a
future extension, for now I just want the test to stop flaking.

Fixes: 569e5dc745 ("pan/bi: Schedule for pressure pre-RA")
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17841>
This commit is contained in:
Alyssa Rosenzweig
2022-08-19 19:22:14 -04:00
committed by Marge Bot
parent 15e15422ba
commit e12a9ce8d6

View File

@@ -144,6 +144,20 @@ create_dag(bi_context *ctx, bi_block *block, void *memctx)
break;
case BIFROST_MESSAGE_ATTRIBUTE:
/* Regular attribute loads can be reordered, but
* writeable attributes can't be. Our one use of
* writeable attributes are images.
*/
if ((I->op == BI_OPCODE_LD_TEX) ||
(I->op == BI_OPCODE_LD_TEX_IMM) ||
(I->op == BI_OPCODE_LD_ATTR_TEX)) {
add_dep(node, memory_store);
memory_load = node;
}
break;
case BIFROST_MESSAGE_STORE:
assert(I->seg != BI_SEG_UBO);
add_dep(node, memory_load);