summaryrefslogtreecommitdiffstats
path: root/src/panfrost
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-07-19 16:27:39 -0700
committerAlyssa Rosenzweig <[email protected]>2019-07-22 08:20:34 -0700
commit055aa9b1f48728eb566b26d197d41068a8acaf84 (patch)
tree684174faff3edaa7b2d2d9b44a43548da9d96284 /src/panfrost
parentf0d0061b18aa39179552fe6f6c49e3f0ad63a9c1 (diff)
panfrost/midgard: Reenable pipeline register creation
This was disabled to permit regression-free RA work. Now that the spill code is in place, we can reenable, with some caveats about efficacy. Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/panfrost')
-rw-r--r--src/panfrost/midgard/midgard_schedule.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/panfrost/midgard/midgard_schedule.c b/src/panfrost/midgard/midgard_schedule.c
index 862b9306c15..84b7b1be023 100644
--- a/src/panfrost/midgard/midgard_schedule.c
+++ b/src/panfrost/midgard/midgard_schedule.c
@@ -769,19 +769,18 @@ schedule_program(compiler_context *ctx)
g = allocate_registers(ctx, &spilled);
} while(spilled && ((iter_count--) > 0));
- /* We would like to run RA after scheduling, but spilling can
- * complicate this */
+ /* After RA finishes, we schedule all at once */
- mir_foreach_block(ctx, block) {
- schedule_block(ctx, block);
- }
-#if 0
-
- /* Pipeline registers creation is a prepass before RA */
- mir_create_pipeline_registers(ctx);
-#endif
+ mir_foreach_block(ctx, block) {
+ schedule_block(ctx, block);
+ }
+ /* Finally, we create pipeline registers as a peephole pass after
+ * scheduling. This isn't totally optimal, since there are cases where
+ * the usage of pipeline registers can eliminate spills, but it does
+ * save some power */
+ mir_create_pipeline_registers(ctx);
if (iter_count <= 0) {
fprintf(stderr, "panfrost: Gave up allocating registers, rendering will be incomplete\n");