summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Neph <ryanneph@google.com>2020-12-16 01:18:09 +0000
committerMarge Bot <eric+marge@anholt.net>2020-12-29 08:58:09 +0000
commitaccc2222174a90fd24ee56ce751feb6022ecc0c7 (patch)
tree172fc16827060eb503fcb41e8b9ef2eb36b548d3
parent46d2f4b75e3f10a9fc0d5e2b33027dc70fc5af69 (diff)
virgl: fix BGRA emulation artifacts during window resize
On some devices, window resizing results in flashes of blue- and orange-tinted versions of the current frame until resizing is finished. This fix ensures that the emubgra tweak used for GLES virgl hosts has its enabled state flag set properly during resize events. v2: removed unrelated whitespace change Fixes: 6f68cacf619 ("virgl: Always enable emulated BGRA and swizzling unless specifically told not to") Signed-off-by: Ryan Neph <ryanneph@google.com> Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8119>
-rw-r--r--src/gallium/drivers/virgl/virgl_screen.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
index f55b5f22ac6..80104b859d2 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -874,7 +874,9 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c
fixup_formats(&screen->caps.caps, &screen->caps.caps.v2.scanout);
union virgl_caps *caps = &screen->caps.caps;
- screen->tweak_gles_emulate_bgra &= !virgl_format_check_bitmask(PIPE_FORMAT_B8G8R8A8_SRGB, caps->v1.render.bitmask, false);
+ bool may_emulate_bgra = (caps->v2.capability_bits & VIRGL_CAP_APP_TWEAK_SUPPORT);
+ screen->tweak_gles_emulate_bgra &= !virgl_format_check_bitmask(
+ PIPE_FORMAT_B8G8R8A8_SRGB, caps->v1.render.bitmask, may_emulate_bgra);
screen->refcnt = 1;
slab_create_parent(&screen->transfer_pool, sizeof(struct virgl_transfer), 16);