dri: Add additional 16/32b float/int formats

Add additional 16 and 32b float formats, and the missing BGR161616.

For the dri2_format_table, just use the pipe formats twice, rather than
introducing new __DRI_IMAGE_FORMAT_x in this day and age (they are the
same thing).

Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36081>
This commit is contained in:
Rob Clark 2025-06-27 10:19:55 -07:00 committed by Marge Bot
parent 0fcb0ac1c5
commit 6d3f266406
3 changed files with 32 additions and 0 deletions

View file

@ -2169,7 +2169,15 @@ dri2_num_fourcc_format_planes(EGLint format)
case DRM_FORMAT_RG88:
case DRM_FORMAT_GR88:
case DRM_FORMAT_R16:
case DRM_FORMAT_R16F:
case DRM_FORMAT_R32F:
case DRM_FORMAT_GR1616:
case DRM_FORMAT_GR1616F:
case DRM_FORMAT_GR3232F:
case DRM_FORMAT_BGR161616:
case DRM_FORMAT_BGR161616F:
case DRM_FORMAT_BGR323232F:
case DRM_FORMAT_ABGR32323232F:
case DRM_FORMAT_RGB332:
case DRM_FORMAT_BGR233:
case DRM_FORMAT_XRGB4444:

View file

@ -457,6 +457,22 @@ static const struct dri2_format_mapping dri2_format_table[] = {
PIPE_FORMAT_RG88_UNORM, 1, },
{ DRM_FORMAT_GR1616, __DRI_IMAGE_FORMAT_GR1616,
PIPE_FORMAT_RG1616_UNORM, 1, },
{ DRM_FORMAT_R16F, PIPE_FORMAT_R16_FLOAT,
PIPE_FORMAT_R16_FLOAT, 1 },
{ DRM_FORMAT_R32F, PIPE_FORMAT_R32_FLOAT,
PIPE_FORMAT_R32_FLOAT, 1 },
{ DRM_FORMAT_GR1616F, PIPE_FORMAT_R16G16_FLOAT,
PIPE_FORMAT_R16G16_FLOAT, 1 },
{ DRM_FORMAT_GR3232F, PIPE_FORMAT_R32G32_FLOAT,
PIPE_FORMAT_R32G32_FLOAT, 1 },
{ DRM_FORMAT_BGR161616, PIPE_FORMAT_R16G16B16_UNORM,
PIPE_FORMAT_R16G16B16_UNORM, 1 },
{ DRM_FORMAT_BGR161616F, PIPE_FORMAT_R16G16B16_FLOAT,
PIPE_FORMAT_R16G16B16_FLOAT, 1 },
{ DRM_FORMAT_BGR323232F, PIPE_FORMAT_R32G32B32_FLOAT,
PIPE_FORMAT_R32G32B32_FLOAT, 1 },
{ DRM_FORMAT_ABGR32323232F, PIPE_FORMAT_R32G32B32A32_FLOAT,
PIPE_FORMAT_R32G32B32A32_FLOAT, 1 },
/*
* YUV formats:

View file

@ -68,6 +68,14 @@ static const struct {
{ PIPE_FORMAT_R16G16B16A16_UNORM, DRM_FORMAT_ABGR16161616 },
{ PIPE_FORMAT_R16G16B16X16_FLOAT, DRM_FORMAT_XBGR16161616F },
{ PIPE_FORMAT_R16G16B16A16_FLOAT, DRM_FORMAT_ABGR16161616F },
{ PIPE_FORMAT_R16_FLOAT, DRM_FORMAT_R16F },
{ PIPE_FORMAT_R32_FLOAT, DRM_FORMAT_R32F },
{ PIPE_FORMAT_R16G16_FLOAT, DRM_FORMAT_GR1616F },
{ PIPE_FORMAT_R32G32_FLOAT, DRM_FORMAT_GR3232F },
{ PIPE_FORMAT_R16G16B16_UNORM, DRM_FORMAT_BGR161616 },
{ PIPE_FORMAT_R16G16B16_FLOAT, DRM_FORMAT_BGR161616F },
{ PIPE_FORMAT_R32G32B32_FLOAT, DRM_FORMAT_BGR323232F },
{ PIPE_FORMAT_R32G32B32A32_FLOAT, DRM_FORMAT_ABGR32323232F },
};
enum pipe_format