diff options
author | Eric Anholt <[email protected]> | 2015-01-14 10:53:20 +1300 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2015-01-15 22:19:25 +1300 |
commit | 1b241c59e834ba4702a79530c3ea373101d55788 (patch) | |
tree | de32047247bfb02989bbf260f9d86fdc5bbdbc98 /src/gallium/drivers | |
parent | d0d6d24723fb368a1bba1b379fd753713f867eca (diff) |
vc4: Add dumping for the TILE_RENDERING_MODE_CONFIG packet.
I wanted to read it, so I wrote parsing.
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/vc4/vc4_cl_dump.c | 71 |
1 files changed, 70 insertions, 1 deletions
diff --git a/src/gallium/drivers/vc4/vc4_cl_dump.c b/src/gallium/drivers/vc4/vc4_cl_dump.c index 6c380219ce1..c9044b4ab81 100644 --- a/src/gallium/drivers/vc4/vc4_cl_dump.c +++ b/src/gallium/drivers/vc4/vc4_cl_dump.c @@ -96,6 +96,75 @@ dump_VC4_PACKET_CLIPPER_Z_SCALING(void *cl, uint32_t offset, uint32_t hw_offset) } static void +dump_VC4_PACKET_TILE_RENDERING_MODE_CONFIG(void *cl, uint32_t offset, uint32_t hw_offset) +{ + uint32_t *render_offset = cl + offset; + uint16_t *shorts = cl + offset + 4; + uint8_t *bytes = cl + offset + 8; + + fprintf(stderr, "0x%08x 0x%08x: color offset 0x%08x\n", + offset, hw_offset, + *render_offset); + + fprintf(stderr, "0x%08x 0x%08x: width %d\n", + offset + 4, hw_offset + 4, + shorts[0]); + + fprintf(stderr, "0x%08x 0x%08x: height %d\n", + offset + 6, hw_offset + 6, + shorts[1]); + + const char *format = "???"; + switch ((bytes[0] >> 2) & 3) { + case 0: + format = "BGR565_DITHERED"; + break; + case 1: + format = "RGBA8888"; + break; + case 2: + format = "BGR565"; + break; + } + if (shorts[2] & VC4_RENDER_CONFIG_TILE_BUFFER_64BIT) + format = "64bit"; + + const char *tiling = "???"; + switch ((bytes[0] >> 6) & 3) { + case 0: + tiling = "linear"; + break; + case 1: + tiling = "T"; + break; + case 2: + tiling = "LT"; + break; + } + + fprintf(stderr, "0x%08x 0x%08x: 0x%02x %s %s %s\n", + offset + 8, hw_offset + 8, + bytes[0], + format, tiling, + (bytes[0] & VC4_RENDER_CONFIG_MS_MODE_4X) ? "ms" : "ss"); + + const char *earlyz = ""; + if (bytes[1] & (1 << 3)) { + earlyz = "early_z disabled"; + } else { + if (bytes[1] & (1 << 2)) + earlyz = "early_z >"; + else + earlyz = "early_z <"; + } + + fprintf(stderr, "0x%08x 0x%08x: 0x%02x %s\n", + offset + 9, hw_offset + 9, + bytes[1], + earlyz); +} + +static void dump_VC4_PACKET_TILE_COORDINATES(void *cl, uint32_t offset, uint32_t hw_offset) { uint8_t *tilecoords = cl + offset; @@ -165,7 +234,7 @@ static const struct packet_info { PACKET_DUMP(VC4_PACKET_CLIPPER_Z_SCALING, 9), PACKET(VC4_PACKET_TILE_BINNING_MODE_CONFIG, 16), - PACKET(VC4_PACKET_TILE_RENDERING_MODE_CONFIG, 11), + PACKET_DUMP(VC4_PACKET_TILE_RENDERING_MODE_CONFIG, 11), PACKET(VC4_PACKET_CLEAR_COLORS, 14), PACKET_DUMP(VC4_PACKET_TILE_COORDINATES, 3), |