panfrost: Document "depth-buffer writeback" bit
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sat, 9 Mar 2019 00:12:07 +0000 (00:12 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Tue, 12 Mar 2019 02:37:42 +0000 (02:37 +0000)
This bit, if set, causes the depth buffer to be copied from GPU tile
memory to the provided depth buffer in main memory. If not set, the GPU
will not access the main memory (saving considerable memory bandwidth if
depth results are not actually used).

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
src/gallium/drivers/panfrost/include/panfrost-job.h
src/gallium/drivers/panfrost/pan_context.c

index d719325d07ba104db52ac705373a4c0ceb25c8d2..28ba3f85ad405ceab2cee08a8120d87c4a0d400d 100644 (file)
@@ -1457,6 +1457,14 @@ struct bifrost_fb_extra {
 } __attribute__((packed));
 
 /* flags for unk3 */
+
+/* Enables writing depth results back to main memory (rather than keeping them
+ * on-chip in the tile buffer and then discarding) */
+
+#define MALI_MFBD_DEPTH_WRITE (1 << 10)
+
+/* The MFBD contains the extra bifrost_fb_extra section */
+
 #define MALI_MFBD_EXTRA (1 << 13)
 
 struct bifrost_framebuffer {
index 9d89a8978aec6fa8d4471d830ebbe7df5e900dc1..59095ae0203c646a3d0b8c330a982a75f87baa58 100644 (file)
@@ -257,7 +257,7 @@ panfrost_set_fragment_target(struct panfrost_context *ctx)
 
                         ctx->fragment_extra.unk = 0x435; /* General 0x400 in all unks. 0x5 for depth/stencil. 0x10 for AFBC encoded depth stencil. Unclear where the 0x20 is from */
 
-                        ctx->fragment_mfbd.unk3 |= 0x400;
+                        ctx->fragment_mfbd.unk3 |= MALI_MFBD_DEPTH_WRITE;
                 }
         }