Mesa (main): dri: add [ax]bgr16161616 to format lookup tables
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 27 08:00:05 UTC 2022
Module: Mesa
Branch: main
Commit: 19f62b430369760ccfa246da6fcd3686e495f2df
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=19f62b430369760ccfa246da6fcd3686e495f2df
Author: Manuel Stoeckl <code at mstoeckl.com>
Date: Mon Jan 17 22:03:20 2022 -0500
dri: add [ax]bgr16161616 to format lookup tables
Note: The format __DRI_IMAGE_FORMAT_ABGR16161616 was already
in the dri2_format_table, but had been hidden from outside view,
for lack of an official DRM fourcc. Since its fourcc has now been
assigned, it is safe to reveal the format.
Signed-off-by: Manuel Stoeckl <code at mstoeckl.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14580>
---
src/egl/drivers/dri2/egl_dri2.c | 2 ++
src/gallium/frontends/dri/dri_helpers.c | 10 +++++-----
src/gallium/frontends/dri/dri_util.c | 10 ++++++++++
src/loader/loader_dri3_helper.c | 4 ++++
4 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 87ea2bdb3de..79e1cbe25ad 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -2665,6 +2665,8 @@ dri2_num_fourcc_format_planes(EGLint format)
case DRM_FORMAT_ABGR2101010:
case DRM_FORMAT_RGBA1010102:
case DRM_FORMAT_BGRA1010102:
+ case DRM_FORMAT_ABGR16161616:
+ case DRM_FORMAT_XBGR16161616:
case DRM_FORMAT_XBGR16161616F:
case DRM_FORMAT_ABGR16161616F:
case DRM_FORMAT_YUYV:
diff --git a/src/gallium/frontends/dri/dri_helpers.c b/src/gallium/frontends/dri/dri_helpers.c
index e170965bfdd..7b3d869b53a 100644
--- a/src/gallium/frontends/dri/dri_helpers.c
+++ b/src/gallium/frontends/dri/dri_helpers.c
@@ -446,6 +446,9 @@ static const struct dri2_format_mapping dri2_format_table[] = {
{ DRM_FORMAT_ABGR16161616, __DRI_IMAGE_FORMAT_ABGR16161616,
__DRI_IMAGE_COMPONENTS_RGBA, PIPE_FORMAT_R16G16B16A16_UNORM, 1,
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_ABGR16161616 } } },
+ { DRM_FORMAT_XBGR16161616, __DRI_IMAGE_FORMAT_XBGR16161616,
+ __DRI_IMAGE_COMPONENTS_RGB, PIPE_FORMAT_R16G16B16X16_UNORM, 1,
+ { { 0, 0, 0, __DRI_IMAGE_FORMAT_XBGR16161616 } } },
{ DRM_FORMAT_ARGB2101010, __DRI_IMAGE_FORMAT_ARGB2101010,
__DRI_IMAGE_COMPONENTS_RGBA, PIPE_FORMAT_B10G10R10A2_UNORM, 1,
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_ARGB2101010 } } },
@@ -693,11 +696,8 @@ dri2_query_dma_buf_formats(__DRIscreen *_screen, int max, int *formats,
const struct dri2_format_mapping *map = &dri2_format_table[i];
/* The sRGB format is not a real FourCC as defined by drm_fourcc.h, so we
- * must not leak it out to clients. The ABGR16161616 format wasn't
- * real until recently. Don't leak it out for now.
- */
- if (dri2_format_table[i].dri_fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||
- dri2_format_table[i].dri_fourcc == DRM_FORMAT_ABGR16161616)
+ * must not leak it out to clients. */
+ if (dri2_format_table[i].dri_fourcc == __DRI_IMAGE_FOURCC_SARGB8888)
continue;
if (pscreen->is_format_supported(pscreen, map->pipe_format,
diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c
index 4a6c201387e..8eeeed03add 100644
--- a/src/gallium/frontends/dri/dri_util.c
+++ b/src/gallium/frontends/dri/dri_util.c
@@ -1049,6 +1049,16 @@ static const struct {
.mesa_format = MESA_FORMAT_RGBX_FLOAT16,
.internal_format = GL_RGBA16F,
},
+ {
+ .image_format = __DRI_IMAGE_FORMAT_ABGR16161616,
+ .mesa_format = MESA_FORMAT_RGBA_UNORM16,
+ .internal_format = GL_RGBA16,
+ },
+ {
+ .image_format = __DRI_IMAGE_FORMAT_XBGR16161616,
+ .mesa_format = MESA_FORMAT_RGBX_UNORM16,
+ .internal_format = GL_RGBA16,
+ },
{
.image_format = __DRI_IMAGE_FORMAT_ARGB2101010,
.mesa_format = MESA_FORMAT_B10G10R10A2_UNORM,
diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
index ae4fb374604..89f0d8eaba1 100644
--- a/src/loader/loader_dri3_helper.c
+++ b/src/loader/loader_dri3_helper.c
@@ -1281,6 +1281,8 @@ dri3_cpp_for_format(uint32_t format) {
case __DRI_IMAGE_FORMAT_SABGR8:
case __DRI_IMAGE_FORMAT_SXRGB8:
return 4;
+ case __DRI_IMAGE_FORMAT_ABGR16161616:
+ case __DRI_IMAGE_FORMAT_XBGR16161616:
case __DRI_IMAGE_FORMAT_XBGR16161616F:
case __DRI_IMAGE_FORMAT_ABGR16161616F:
return 8;
@@ -1343,6 +1345,8 @@ image_format_to_fourcc(int format)
case __DRI_IMAGE_FORMAT_ARGB2101010: return DRM_FORMAT_ARGB2101010;
case __DRI_IMAGE_FORMAT_XBGR2101010: return DRM_FORMAT_XBGR2101010;
case __DRI_IMAGE_FORMAT_ABGR2101010: return DRM_FORMAT_ABGR2101010;
+ case __DRI_IMAGE_FORMAT_ABGR16161616: return DRM_FORMAT_ABGR16161616;
+ case __DRI_IMAGE_FORMAT_XBGR16161616: return DRM_FORMAT_XBGR16161616;
case __DRI_IMAGE_FORMAT_XBGR16161616F: return DRM_FORMAT_XBGR16161616F;
case __DRI_IMAGE_FORMAT_ABGR16161616F: return DRM_FORMAT_ABGR16161616F;
}
More information about the mesa-commit
mailing list