From 6c89a728d9e5d072cb504453e73077564c6523d3 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 7 Dec 2016 12:59:54 +0000 Subject: [PATCH] etnaviv: Cannot render to rb-swapped formats Exposing rb swapped (or other swizzled) formats for rendering would involve swizzing in the pixel shader. This is not the case at the moment, so reject requests for creating such surfaces. (GPUs that need an extra resolve step anyway due to multiple pixel pipes, such as gc2000, might also do this swap in the resolve operation. But this would be tricky to keep track of) CC: Signed-off-by: Wladimir J. van der Laan Acked-by: Christian Gmeiner (cherry picked from commit 658568941d5e232d690e1ffbcddbd6ea9685693a) --- src/gallium/drivers/etnaviv/etnaviv_screen.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index fa762262d00..0de74be4d8f 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -469,8 +469,11 @@ etna_screen_is_format_supported(struct pipe_screen *pscreen, return FALSE; if (usage & PIPE_BIND_RENDER_TARGET) { - /* if render target, must be RS-supported format */ - if (translate_rs_format(format) != ETNA_NO_MATCH) { + /* If render target, must be RS-supported format that is not rb swapped. + * Exposing rb swapped (or other swizzled) formats for rendering would + * involve swizzing in the pixel shader. + */ + if (translate_rs_format(format) != ETNA_NO_MATCH && !translate_rs_format_rb_swap(format)) { /* Validate MSAA; number of samples must be allowed, and render target * must have MSAA'able format. */ if (sample_count > 1) {