aboutsummaryrefslogtreecommitdiffstats
path: root/src/panfrost/include
diff options
context:
space:
mode:
authorTomeu Vizoso <[email protected]>2019-10-30 12:05:30 +0100
committerTomeu Vizoso <[email protected]>2019-11-06 16:18:46 +0100
commit9447a84f69c639cdd84fccec7e9447b88be35e30 (patch)
tree52f33bf0c1b59b0b3ae30bed8a7bee1e61325b3c /src/panfrost/include
parente40d11ccb27f4ebfc2d7874443fe44969a3f28df (diff)
panfrost: Rework format encoding on SFBD
Signed-off-by: Alyssa Rosenzweig <[email protected]> Signed-off-by: Tomeu Vizoso <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/panfrost/include')
-rw-r--r--src/panfrost/include/panfrost-job.h64
1 files changed, 38 insertions, 26 deletions
diff --git a/src/panfrost/include/panfrost-job.h b/src/panfrost/include/panfrost-job.h
index dba8d3306b0..fb356e1e6d9 100644
--- a/src/panfrost/include/panfrost-job.h
+++ b/src/panfrost/include/panfrost-job.h
@@ -75,15 +75,6 @@ enum mali_draw_mode {
#define MALI_CULL_FACE_FRONT (1 << 6)
#define MALI_CULL_FACE_BACK (1 << 7)
-/* TODO: Might this actually be a finer bitfield? */
-#define MALI_DEPTH_STENCIL_ENABLE 0x6400
-
-#define DS_ENABLE(field) \
- (field == MALI_DEPTH_STENCIL_ENABLE) \
- ? "MALI_DEPTH_STENCIL_ENABLE" \
- : (field == 0) ? "0" \
- : "0 /* XXX: Unknown, check hexdump */"
-
/* Used in stencil and depth tests */
enum mali_func {
@@ -1374,9 +1365,10 @@ struct mali_payload_fragment {
/* Flags apply to format. With just MSAA_A and MSAA_B, the framebuffer is
* configured for 4x. With MSAA_8, it is configured for 8x. */
-#define MALI_FRAMEBUFFER_MSAA_8 (1 << 3)
-#define MALI_FRAMEBUFFER_MSAA_A (1 << 4)
-#define MALI_FRAMEBUFFER_MSAA_B (1 << 23)
+#define MALI_SFBD_FORMAT_MSAA_8 (1 << 3)
+#define MALI_SFBD_FORMAT_MSAA_A (1 << 4)
+#define MALI_SFBD_FORMAT_MSAA_B (1 << 4)
+#define MALI_SFBD_FORMAT_SRGB (1 << 5)
/* Fast/slow based on whether all three buffers are cleared at once */
@@ -1426,6 +1418,32 @@ struct midgard_tiler_descriptor {
u32 weights[8];
};
+enum mali_block_format {
+ MALI_BLOCK_TILED = 0x0,
+ MALI_BLOCK_UNKNOWN = 0x1,
+ MALI_BLOCK_LINEAR = 0x2,
+ MALI_BLOCK_AFBC = 0x3,
+};
+
+struct mali_sfbd_format {
+ /* 0x1 */
+ unsigned unk1 : 6;
+
+ /* mali_channel_swizzle */
+ unsigned swizzle : 12;
+
+ /* MALI_POSITIVE */
+ unsigned nr_channels : 2;
+
+ /* 0x4 */
+ unsigned unk2 : 6;
+
+ enum mali_block_format block : 2;
+
+ /* 0xb */
+ unsigned unk3 : 4;
+};
+
struct mali_single_framebuffer {
u32 unknown1;
u32 unknown2;
@@ -1433,10 +1451,7 @@ struct mali_single_framebuffer {
u64 zero1;
u64 zero0;
- /* Exact format is ironically not known, since EGL is finnicky with the
- * blob. MSAA, colourspace, etc are configured here. */
-
- u32 format;
+ struct mali_sfbd_format format;
u32 clear_flags;
u32 zero2;
@@ -1468,10 +1483,14 @@ struct mali_single_framebuffer {
* disabled. */
mali_ptr depth_buffer; // not SAME_VA
- u64 depth_buffer_enable;
+ u32 depth_stride_zero : 4;
+ u32 depth_stride : 28;
+ u32 zero7;
mali_ptr stencil_buffer; // not SAME_VA
- u64 stencil_buffer_enable;
+ u32 stencil_stride_zero : 4;
+ u32 stencil_stride : 28;
+ u32 zero8;
u32 clear_color_1; // RGBA8888 from glClear, actually used by hardware
u32 clear_color_2; // always equal, but unclear function?
@@ -1506,13 +1525,6 @@ struct mali_compute_fbd {
#define MALI_MFBD_FORMAT_MSAA (1 << 1)
#define MALI_MFBD_FORMAT_SRGB (1 << 2)
-enum mali_mfbd_block_format {
- MALI_MFBD_BLOCK_TILED = 0x0,
- MALI_MFBD_BLOCK_UNKNOWN = 0x1,
- MALI_MFBD_BLOCK_LINEAR = 0x2,
- MALI_MFBD_BLOCK_AFBC = 0x3,
-};
-
struct mali_rt_format {
unsigned unk1 : 32;
unsigned unk2 : 3;
@@ -1520,7 +1532,7 @@ struct mali_rt_format {
unsigned nr_channels : 2; /* MALI_POSITIVE */
unsigned unk3 : 5;
- enum mali_mfbd_block_format block : 2;
+ enum mali_block_format block : 2;
unsigned flags : 4;
unsigned swizzle : 12;