From 828299d1bd3f98179cd82939d25d919f2022541e Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 30 Oct 2017 10:13:52 -0700 Subject: broadcom/vc5: Don't do r/b channel swapping on 565. The HW's format actually matches the gallium format. --- src/gallium/drivers/vc5/vc5_program.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/gallium/drivers/vc5/vc5_program.c') diff --git a/src/gallium/drivers/vc5/vc5_program.c b/src/gallium/drivers/vc5/vc5_program.c index 37173ae58d5..7463709aa5c 100644 --- a/src/gallium/drivers/vc5/vc5_program.c +++ b/src/gallium/drivers/vc5/vc5_program.c @@ -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; -- cgit v1.2.3