mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
virgl: Add tweak to apply a swizzle when drawing/blitting to a emulated BGRA texture
With Qemu this final swizzle is not needed, but with vtest it is, i.e. it depends on how a program using virglrenderer uses the surface that is rendered to, hence a tweak is added. v2: Update description and fix spelling (Emil) v3: Send tweak as binary value instead of using strings (Gurchetan) Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
This commit is contained in:
parent
b793663449
commit
59757dbad6
6 changed files with 13 additions and 0 deletions
|
|
@ -1406,6 +1406,9 @@ static void virgl_send_tweaks(struct virgl_context *vctx, struct virgl_screen *r
|
|||
{
|
||||
if (rs->tweak_gles_emulate_bgra)
|
||||
virgl_encode_tweak(vctx, virgl_tweak_gles_brga_emulate, 1);
|
||||
|
||||
if (rs->tweak_gles_apply_bgra_dest_swizzle)
|
||||
virgl_encode_tweak(vctx, virgl_tweak_gles_brga_apply_dest_swizzle, 1);
|
||||
}
|
||||
|
||||
struct pipe_context *virgl_context_create(struct pipe_screen *pscreen,
|
||||
|
|
|
|||
|
|
@ -8,5 +8,6 @@
|
|||
// 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_SECTION_END
|
||||
|
||||
|
|
|
|||
|
|
@ -593,6 +593,7 @@ enum virgl_context_cmd {
|
|||
|
||||
enum vrend_tweak_type {
|
||||
virgl_tweak_gles_brga_emulate,
|
||||
virgl_tweak_gles_brga_apply_dest_swizzle,
|
||||
virgl_tweak_undefined
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -855,6 +855,7 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c
|
|||
struct virgl_screen *screen = CALLOC_STRUCT(virgl_screen);
|
||||
|
||||
const char *VIRGL_GLES_EMULATE_BGRA = "gles_emulate_bgra";
|
||||
const char *VIRGL_GLES_APPLY_BGRA_DEST_SWIZZLE = "gles_apply_bgra_dest_swizzle";
|
||||
if (!screen)
|
||||
return NULL;
|
||||
|
||||
|
|
@ -863,6 +864,8 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c
|
|||
if (config && config->options) {
|
||||
screen->tweak_gles_emulate_bgra =
|
||||
driQueryOptionb(config->options, VIRGL_GLES_EMULATE_BGRA);
|
||||
screen->tweak_gles_apply_bgra_dest_swizzle =
|
||||
driQueryOptionb(config->options, VIRGL_GLES_APPLY_BGRA_DEST_SWIZZLE);
|
||||
}
|
||||
screen->vws = vws;
|
||||
screen->base.get_name = virgl_get_name;
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ struct virgl_screen {
|
|||
|
||||
uint32_t sub_ctx_id;
|
||||
bool tweak_gles_emulate_bgra;
|
||||
bool tweak_gles_apply_bgra_dest_swizzle;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -370,3 +370,7 @@ DRI_CONF_OPT_BEGIN_B(gles_emulate_bgra, def) \
|
|||
DRI_CONF_DESC(en,gettext("On GLES emulate BGRA formats by using a swizzled RGBA format")) \
|
||||
DRI_CONF_OPT_END
|
||||
|
||||
#define DRI_CONF_GLES_APPLY_BGRA_DEST_SWIZZLE(def) \
|
||||
DRI_CONF_OPT_BEGIN_B(gles_apply_bgra_dest_swizzle, def) \
|
||||
DRI_CONF_DESC(en,gettext("When the BGRA formats are emulated by using swizzled RGBA formats on GLES apply the swizzle when writing")) \
|
||||
DRI_CONF_OPT_END
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue