broadcom/vc5: Don't do r/b channel swapping on 565.
authorEric Anholt <eric@anholt.net>
Mon, 30 Oct 2017 17:13:52 +0000 (10:13 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 30 Oct 2017 20:31:32 +0000 (13:31 -0700)
The HW's format actually matches the gallium format.

src/gallium/drivers/vc5/vc5_program.c

index 37173ae58d5b1e9197798b505cf9c867022388eb..7463709aa5c87ce5f6730844da030fa42e694f39 100644 (file)
@@ -371,8 +371,14 @@ vc5_update_compiled_fs(struct vc5_context *vc5, uint8_t prim_mode)
                 const struct util_format_description *desc =
                         util_format_description(cbuf->format);
 
-                if (desc->swizzle[0] == PIPE_SWIZZLE_Z)
+                /* For BGRA8 formats (DRI window system default format), we
+                 * need to swap R and B, since the HW's format is RGBA8.
+                 */
+                if (desc->swizzle[0] == PIPE_SWIZZLE_Z &&
+                    cbuf->format != PIPE_FORMAT_B5G6R5_UNORM) {
                         key->swap_color_rb |= 1 << i;
+                }
+
                 if (desc->channel[0].type == UTIL_FORMAT_TYPE_FLOAT &&
                     desc->channel[0].size == 32) {
                         key->f32_color_rb |= 1 << i;