From 6f68cacf619f7f13bc870355709224c1f3e9bbd8 Mon Sep 17 00:00:00 2001 From: Rohan Garg Date: Fri, 25 Sep 2020 17:25:34 +0200 Subject: virgl: Always enable emulated BGRA and swizzling unless specifically told not to The emulation is turned on by default only for GLES hosts when the host does not support the BGRA/RGBA external/internal format combination. This can be turned off by setting VIRGL_DEBUG=noemubgra,nobgraswz environment variable. Signed-off-by: Rohan Garg Reviewed-by: Gert Wollny Part-of: --- src/gallium/drivers/virgl/virgl_driinfo.h.in | 4 ++-- src/gallium/drivers/virgl/virgl_screen.c | 11 +++++----- src/gallium/drivers/virgl/virgl_screen.h | 4 ++-- src/util/00-mesa-defaults.conf | 33 ---------------------------- 4 files changed, 10 insertions(+), 42 deletions(-) diff --git a/src/gallium/drivers/virgl/virgl_driinfo.h.in b/src/gallium/drivers/virgl/virgl_driinfo.h.in index 03cc27aeab0..6704e530b3f 100644 --- a/src/gallium/drivers/virgl/virgl_driinfo.h.in +++ b/src/gallium/drivers/virgl/virgl_driinfo.h.in @@ -7,7 +7,7 @@ // 4. Add the code to send the tweek to the host in virgl_send_tweaks // 5. Implement the tweak in virglrenderer DRI_CONF_SECTION_MISCELLANEOUS - DRI_CONF_GLES_EMULATE_BGRA(false) - DRI_CONF_GLES_APPLY_BGRA_DEST_SWIZZLE(false) + DRI_CONF_GLES_EMULATE_BGRA(true) + DRI_CONF_GLES_APPLY_BGRA_DEST_SWIZZLE(true) DRI_CONF_GLES_SAMPLES_PASSED_VALUE(1024, 1, 400000000) DRI_CONF_SECTION_END diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c index 526aca505c5..92944f4c06f 100644 --- a/src/gallium/drivers/virgl/virgl_screen.c +++ b/src/gallium/drivers/virgl/virgl_screen.c @@ -43,8 +43,8 @@ int virgl_debug = 0; static const struct debug_named_value debug_options[] = { { "verbose", VIRGL_DEBUG_VERBOSE, NULL }, { "tgsi", VIRGL_DEBUG_TGSI, NULL }, - { "emubgra", VIRGL_DEBUG_EMULATE_BGRA, "Enable tweak to emulate BGRA as RGBA on GLES hosts"}, - { "bgraswz", VIRGL_DEBUG_BGRA_DEST_SWIZZLE, "Enable tweak to swizzle emulated BGRA on GLES hosts" }, + { "noemubgra", VIRGL_DEBUG_NO_EMULATE_BGRA, "Disable tweak to emulate BGRA as RGBA on GLES hosts"}, + { "nobgraswz", VIRGL_DEBUG_NO_BGRA_DEST_SWIZZLE,"Disable tweak to swizzle emulated BGRA on GLES hosts" }, { "sync", VIRGL_DEBUG_SYNC, "Sync after every flush" }, { "xfer", VIRGL_DEBUG_XFER, "Do not optimize for transfers" }, DEBUG_NAMED_VALUE_END @@ -845,9 +845,8 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c screen->tweak_gles_tf3_value = driQueryOptioni(config->options, VIRGL_GLES_SAMPLES_PASSED_VALUE); } - - screen->tweak_gles_emulate_bgra |= !!(virgl_debug & VIRGL_DEBUG_EMULATE_BGRA); - screen->tweak_gles_apply_bgra_dest_swizzle |= !!(virgl_debug & VIRGL_DEBUG_BGRA_DEST_SWIZZLE); + screen->tweak_gles_emulate_bgra &= !(virgl_debug & VIRGL_DEBUG_NO_EMULATE_BGRA); + screen->tweak_gles_apply_bgra_dest_swizzle &= !(virgl_debug & VIRGL_DEBUG_NO_BGRA_DEST_SWIZZLE); screen->vws = vws; screen->base.get_name = virgl_get_name; @@ -873,6 +872,8 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c &screen->caps.caps.v2.supported_readback_formats); 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); screen->refcnt = 1; slab_create_parent(&screen->transfer_pool, sizeof(struct virgl_transfer), 16); diff --git a/src/gallium/drivers/virgl/virgl_screen.h b/src/gallium/drivers/virgl/virgl_screen.h index 3c7c596e1eb..6349cafc8c7 100644 --- a/src/gallium/drivers/virgl/virgl_screen.h +++ b/src/gallium/drivers/virgl/virgl_screen.h @@ -30,8 +30,8 @@ enum virgl_debug_flags { VIRGL_DEBUG_VERBOSE = 1 << 0, VIRGL_DEBUG_TGSI = 1 << 1, - VIRGL_DEBUG_EMULATE_BGRA = 1 << 2, - VIRGL_DEBUG_BGRA_DEST_SWIZZLE = 1 << 3, + VIRGL_DEBUG_NO_EMULATE_BGRA = 1 << 2, + VIRGL_DEBUG_NO_BGRA_DEST_SWIZZLE = 1 << 3, VIRGL_DEBUG_SYNC = 1 << 4, VIRGL_DEBUG_XFER = 1 << 5, }; diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf index 849da7ea769..b7c37eb0b9e 100644 --- a/src/util/00-mesa-defaults.conf +++ b/src/util/00-mesa-defaults.conf @@ -695,39 +695,6 @@ TODO: document the other workarounds.