From b137afc1e6d444603bdacb74fb982818c05628e7 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 23 Feb 2024 11:44:09 +0000 Subject: [PATCH] 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: (cherry picked from commit c74f4803911d8cbc9e9617ed79ea9480f335addd) --- .pick_status.json | 2 +- src/egl/drivers/dri2/platform_wayland.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index aad39c6da1f..64482bf2177 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -484,7 +484,7 @@ "description": "egl/wayland: Add opaque-equivalent FourCCs", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 4105c2bfe4d..d243b6f1e5d 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -73,6 +73,7 @@ static const struct dri2_wl_visual { */ int alt_dri_image_format; int bpp; + int opaque_wl_drm_format; int rgba_shifts[4]; unsigned int rgba_sizes[4]; } dri2_wl_visuals[] = { @@ -83,6 +84,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_ABGR16161616F, 0, 64, + WL_DRM_FORMAT_XBGR16F, {0, 16, 32, 48}, {16, 16, 16, 16}, }, @@ -93,6 +95,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_XBGR16161616F, 0, 64, + WL_DRM_FORMAT_XBGR16F, {0, 16, 32, -1}, {16, 16, 16, 0}, }, @@ -103,6 +106,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_XRGB2101010, __DRI_IMAGE_FORMAT_XBGR2101010, 32, + WL_DRM_FORMAT_XRGB2101010, {20, 10, 0, -1}, {10, 10, 10, 0}, }, @@ -113,6 +117,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_ARGB2101010, __DRI_IMAGE_FORMAT_ABGR2101010, 32, + WL_DRM_FORMAT_XRGB2101010, {20, 10, 0, 30}, {10, 10, 10, 2}, }, @@ -123,6 +128,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_XBGR2101010, __DRI_IMAGE_FORMAT_XRGB2101010, 32, + WL_DRM_FORMAT_XBGR2101010, {0, 10, 20, -1}, {10, 10, 10, 0}, }, @@ -133,6 +139,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_ABGR2101010, __DRI_IMAGE_FORMAT_ARGB2101010, 32, + WL_DRM_FORMAT_XBGR2101010, {0, 10, 20, 30}, {10, 10, 10, 2}, }, @@ -143,6 +150,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_XRGB8888, __DRI_IMAGE_FORMAT_NONE, 32, + WL_DRM_FORMAT_XRGB8888, {16, 8, 0, -1}, {8, 8, 8, 0}, }, @@ -153,6 +161,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_ARGB8888, __DRI_IMAGE_FORMAT_NONE, 32, + WL_DRM_FORMAT_XRGB8888, {16, 8, 0, 24}, {8, 8, 8, 8}, }, @@ -163,6 +172,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_ABGR8888, __DRI_IMAGE_FORMAT_NONE, 32, + WL_DRM_FORMAT_XBGR8888, {0, 8, 16, 24}, {8, 8, 8, 8}, }, @@ -173,6 +183,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_XBGR8888, __DRI_IMAGE_FORMAT_NONE, 32, + WL_DRM_FORMAT_XBGR8888, {0, 8, 16, -1}, {8, 8, 8, 0}, }, @@ -183,6 +194,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_RGB565, __DRI_IMAGE_FORMAT_NONE, 16, + WL_DRM_FORMAT_RGB565, {11, 5, 0, -1}, {5, 6, 5, 0}, }, @@ -193,6 +205,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_ARGB1555, __DRI_IMAGE_FORMAT_ABGR1555, 16, + WL_DRM_FORMAT_XRGB1555, {10, 5, 0, 15}, {5, 5, 5, 1}, }, @@ -203,6 +216,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_XRGB1555, __DRI_IMAGE_FORMAT_XBGR1555, 16, + WL_DRM_FORMAT_XRGB1555, {10, 5, 0, -1}, {5, 5, 5, 0}, }, @@ -213,6 +227,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_ARGB4444, __DRI_IMAGE_FORMAT_XBGR4444, 16, + WL_DRM_FORMAT_XRGB4444, {8, 4, 0, 12}, {4, 4, 4, 4}, }, @@ -223,6 +238,7 @@ static const struct dri2_wl_visual { __DRI_IMAGE_FORMAT_XRGB4444, __DRI_IMAGE_FORMAT_XBGR4444, 16, + WL_DRM_FORMAT_XRGB4444, {8, 4, 0, -1}, {4, 4, 4, 0}, },