egl/wayland: Add opaque-equivalent FourCCs

Add a mapping for the opaque version of an alphaful format (e.g.
ARGB8888 -> XRGB8888) to better support EGL_EXT_present_opaque.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27709>
(cherry picked from commit c74f4803911d8cbc9e9617ed79ea9480f335addd)
This commit is contained in:
Daniel Stone 2024-02-23 11:44:09 +00:00 committed by Eric Engestrom
parent b067a61c07
commit b137afc1e6
2 changed files with 17 additions and 1 deletions

View file

@ -484,7 +484,7 @@
"description": "egl/wayland: Add opaque-equivalent FourCCs", "description": "egl/wayland: Add opaque-equivalent FourCCs",
"nominated": false, "nominated": false,
"nomination_type": 3, "nomination_type": 3,
"resolution": 4, "resolution": 1,
"main_sha": null, "main_sha": null,
"because_sha": null, "because_sha": null,
"notes": null "notes": null

View file

@ -73,6 +73,7 @@ static const struct dri2_wl_visual {
*/ */
int alt_dri_image_format; int alt_dri_image_format;
int bpp; int bpp;
int opaque_wl_drm_format;
int rgba_shifts[4]; int rgba_shifts[4];
unsigned int rgba_sizes[4]; unsigned int rgba_sizes[4];
} dri2_wl_visuals[] = { } dri2_wl_visuals[] = {
@ -83,6 +84,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_ABGR16161616F, __DRI_IMAGE_FORMAT_ABGR16161616F,
0, 0,
64, 64,
WL_DRM_FORMAT_XBGR16F,
{0, 16, 32, 48}, {0, 16, 32, 48},
{16, 16, 16, 16}, {16, 16, 16, 16},
}, },
@ -93,6 +95,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_XBGR16161616F, __DRI_IMAGE_FORMAT_XBGR16161616F,
0, 0,
64, 64,
WL_DRM_FORMAT_XBGR16F,
{0, 16, 32, -1}, {0, 16, 32, -1},
{16, 16, 16, 0}, {16, 16, 16, 0},
}, },
@ -103,6 +106,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_XRGB2101010, __DRI_IMAGE_FORMAT_XRGB2101010,
__DRI_IMAGE_FORMAT_XBGR2101010, __DRI_IMAGE_FORMAT_XBGR2101010,
32, 32,
WL_DRM_FORMAT_XRGB2101010,
{20, 10, 0, -1}, {20, 10, 0, -1},
{10, 10, 10, 0}, {10, 10, 10, 0},
}, },
@ -113,6 +117,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_ARGB2101010, __DRI_IMAGE_FORMAT_ARGB2101010,
__DRI_IMAGE_FORMAT_ABGR2101010, __DRI_IMAGE_FORMAT_ABGR2101010,
32, 32,
WL_DRM_FORMAT_XRGB2101010,
{20, 10, 0, 30}, {20, 10, 0, 30},
{10, 10, 10, 2}, {10, 10, 10, 2},
}, },
@ -123,6 +128,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_XBGR2101010, __DRI_IMAGE_FORMAT_XBGR2101010,
__DRI_IMAGE_FORMAT_XRGB2101010, __DRI_IMAGE_FORMAT_XRGB2101010,
32, 32,
WL_DRM_FORMAT_XBGR2101010,
{0, 10, 20, -1}, {0, 10, 20, -1},
{10, 10, 10, 0}, {10, 10, 10, 0},
}, },
@ -133,6 +139,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_ABGR2101010, __DRI_IMAGE_FORMAT_ABGR2101010,
__DRI_IMAGE_FORMAT_ARGB2101010, __DRI_IMAGE_FORMAT_ARGB2101010,
32, 32,
WL_DRM_FORMAT_XBGR2101010,
{0, 10, 20, 30}, {0, 10, 20, 30},
{10, 10, 10, 2}, {10, 10, 10, 2},
}, },
@ -143,6 +150,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_XRGB8888, __DRI_IMAGE_FORMAT_XRGB8888,
__DRI_IMAGE_FORMAT_NONE, __DRI_IMAGE_FORMAT_NONE,
32, 32,
WL_DRM_FORMAT_XRGB8888,
{16, 8, 0, -1}, {16, 8, 0, -1},
{8, 8, 8, 0}, {8, 8, 8, 0},
}, },
@ -153,6 +161,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_ARGB8888, __DRI_IMAGE_FORMAT_ARGB8888,
__DRI_IMAGE_FORMAT_NONE, __DRI_IMAGE_FORMAT_NONE,
32, 32,
WL_DRM_FORMAT_XRGB8888,
{16, 8, 0, 24}, {16, 8, 0, 24},
{8, 8, 8, 8}, {8, 8, 8, 8},
}, },
@ -163,6 +172,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_ABGR8888, __DRI_IMAGE_FORMAT_ABGR8888,
__DRI_IMAGE_FORMAT_NONE, __DRI_IMAGE_FORMAT_NONE,
32, 32,
WL_DRM_FORMAT_XBGR8888,
{0, 8, 16, 24}, {0, 8, 16, 24},
{8, 8, 8, 8}, {8, 8, 8, 8},
}, },
@ -173,6 +183,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_XBGR8888, __DRI_IMAGE_FORMAT_XBGR8888,
__DRI_IMAGE_FORMAT_NONE, __DRI_IMAGE_FORMAT_NONE,
32, 32,
WL_DRM_FORMAT_XBGR8888,
{0, 8, 16, -1}, {0, 8, 16, -1},
{8, 8, 8, 0}, {8, 8, 8, 0},
}, },
@ -183,6 +194,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_RGB565, __DRI_IMAGE_FORMAT_RGB565,
__DRI_IMAGE_FORMAT_NONE, __DRI_IMAGE_FORMAT_NONE,
16, 16,
WL_DRM_FORMAT_RGB565,
{11, 5, 0, -1}, {11, 5, 0, -1},
{5, 6, 5, 0}, {5, 6, 5, 0},
}, },
@ -193,6 +205,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_ARGB1555, __DRI_IMAGE_FORMAT_ARGB1555,
__DRI_IMAGE_FORMAT_ABGR1555, __DRI_IMAGE_FORMAT_ABGR1555,
16, 16,
WL_DRM_FORMAT_XRGB1555,
{10, 5, 0, 15}, {10, 5, 0, 15},
{5, 5, 5, 1}, {5, 5, 5, 1},
}, },
@ -203,6 +216,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_XRGB1555, __DRI_IMAGE_FORMAT_XRGB1555,
__DRI_IMAGE_FORMAT_XBGR1555, __DRI_IMAGE_FORMAT_XBGR1555,
16, 16,
WL_DRM_FORMAT_XRGB1555,
{10, 5, 0, -1}, {10, 5, 0, -1},
{5, 5, 5, 0}, {5, 5, 5, 0},
}, },
@ -213,6 +227,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_ARGB4444, __DRI_IMAGE_FORMAT_ARGB4444,
__DRI_IMAGE_FORMAT_XBGR4444, __DRI_IMAGE_FORMAT_XBGR4444,
16, 16,
WL_DRM_FORMAT_XRGB4444,
{8, 4, 0, 12}, {8, 4, 0, 12},
{4, 4, 4, 4}, {4, 4, 4, 4},
}, },
@ -223,6 +238,7 @@ static const struct dri2_wl_visual {
__DRI_IMAGE_FORMAT_XRGB4444, __DRI_IMAGE_FORMAT_XRGB4444,
__DRI_IMAGE_FORMAT_XBGR4444, __DRI_IMAGE_FORMAT_XBGR4444,
16, 16,
WL_DRM_FORMAT_XRGB4444,
{8, 4, 0, -1}, {8, 4, 0, -1},
{4, 4, 4, 0}, {4, 4, 4, 0},
}, },