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@mstoeckl.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14580>
This commit is contained in:
Manuel Stoeckl 2022-01-17 22:03:20 -05:00 committed by Marge Bot
parent 7e554e11a1
commit 19f62b4303
4 changed files with 21 additions and 5 deletions

View File

@ -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:

View File

@ -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,

View File

@ -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,

View File

@ -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;
}