diff --git a/src/panfrost/ci/panfrost-g610-fails.txt b/src/panfrost/ci/panfrost-g610-fails.txt index 1285b3a49bd..1f16fe0ee20 100644 --- a/src/panfrost/ci/panfrost-g610-fails.txt +++ b/src/panfrost/ci/panfrost-g610-fails.txt @@ -83,7 +83,6 @@ shaders@point-vertex-id gl_vertexid divisor,Fail shaders@point-vertex-id gl_vertexid,Fail shaders@point-vertex-id gl_vertexid gl_instanceid divisor,Fail shaders@point-vertex-id gl_vertexid gl_instanceid,Fail -spec@arb_arrays_of_arrays@execution@atomic_counters@fs-indirect-index,Fail spec@arb_point_sprite@arb_point_sprite-mipmap,Fail spec@arb_shader_texture_lod@execution@arb_shader_texture_lod-texgradcube,Fail spec@arb_shader_texture_lod@execution@arb_shader_texture_lod-texgrad,Fail diff --git a/src/panfrost/compiler/bifrost/bi_pressure_schedule.c b/src/panfrost/compiler/bifrost/bi_pressure_schedule.c index b4fdddd699e..9ed37e6a122 100644 --- a/src/panfrost/compiler/bifrost/bi_pressure_schedule.c +++ b/src/panfrost/compiler/bifrost/bi_pressure_schedule.c @@ -74,6 +74,11 @@ create_dag(bi_context *ctx, bi_block *block, void *memctx) */ if (I->seg != BI_SEG_UBO) { add_dep(node, memory_store); + /* Chain loads together so a store cannot be scheduled + * between two loads to the same address. Without alias + * analysis we conservatively serialize all loads. + */ + add_dep(node, memory_load); memory_load = node; } @@ -87,6 +92,7 @@ create_dag(bi_context *ctx, bi_block *block, void *memctx) 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); + add_dep(node, memory_load); memory_load = node; }