summaryrefslogtreecommitdiffstats
path: root/src/panfrost/midgard/midgard_schedule.c
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-08-22 13:59:54 -0700
committerAlyssa Rosenzweig <[email protected]>2019-08-22 14:03:23 -0700
commit272ce6f5a7cd646be495f1d71918476e94b29c4b (patch)
tree01ba6fa43a99376c0963a4553858ed1a8f68d531 /src/panfrost/midgard/midgard_schedule.c
parent2c5ba2ee6ea68aa3062156d1a4abfc3b2556775d (diff)
pan/midgard: Fix writeout combining
shader-db regression in the scheduler. Fixes: dff4986b1aa ("pan/midgard: Emit store_output branch just-in-time") total bundles in shared programs: 2055 -> 2019 (-1.75%) bundles in affected programs: 1055 -> 1019 (-3.41%) helped: 36 HURT: 0 helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1 helped stats (rel) min: 0.35% max: 20.00% x̄: 6.71% x̃: 5.16% 95% mean confidence interval for bundles value: -1.00 -1.00 95% mean confidence interval for bundles %-change: -8.45% -4.97% Bundles are helped. total quadwords in shared programs: 3444 -> 3408 (-1.05%) quadwords in affected programs: 1897 -> 1861 (-1.90%) helped: 36 HURT: 0 helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1 helped stats (rel) min: 0.19% max: 14.29% x̄: 3.97% x̃: 2.99% 95% mean confidence interval for quadwords value: -1.00 -1.00 95% mean confidence interval for quadwords %-change: -5.08% -2.86% Quadwords are helped. Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/panfrost/midgard/midgard_schedule.c')
-rw-r--r--src/panfrost/midgard/midgard_schedule.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/panfrost/midgard/midgard_schedule.c b/src/panfrost/midgard/midgard_schedule.c
index 399c259073e..e1877b314ce 100644
--- a/src/panfrost/midgard/midgard_schedule.c
+++ b/src/panfrost/midgard/midgard_schedule.c
@@ -64,10 +64,13 @@ is_single_component_mask(unsigned mask)
static bool
can_run_concurrent_ssa(midgard_instruction *first, midgard_instruction *second)
{
+ /* Writeout has its own rules anyway */
+ if (first->compact_branch || second->compact_branch)
+ return true;
+
/* Each instruction reads some registers and writes to a register. See
* where the first writes */
- /* Figure out where exactly we wrote to */
int source = first->ssa_args.dest;
int source_mask = first->mask;