gallium/dri: Add P030 format

Acked-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19639>
This commit is contained in:
Jose Maria Casanova Crespo 2022-11-09 13:07:26 +01:00 committed by José María Casanova Crespo
parent e253729e03
commit 4ea4147935
11 changed files with 18 additions and 0 deletions

View file

@ -2775,6 +2775,7 @@ dri2_num_fourcc_format_planes(EGLint format)
case DRM_FORMAT_P010:
case DRM_FORMAT_P012:
case DRM_FORMAT_P016:
case DRM_FORMAT_P030:
return 2;
case DRM_FORMAT_YUV410:

View file

@ -593,6 +593,10 @@ static const struct dri2_format_mapping dri2_format_table[] = {
__DRI_IMAGE_COMPONENTS_Y_UV, PIPE_FORMAT_P016, 2,
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R16 },
{ 1, 1, 1, __DRI_IMAGE_FORMAT_GR1616 } } },
{ DRM_FORMAT_P030, __DRI_IMAGE_FORMAT_NONE,
__DRI_IMAGE_COMPONENTS_Y_UV, PIPE_FORMAT_P030, 2,
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R16 },
{ 1, 1, 1, __DRI_IMAGE_FORMAT_GR1616 } } },
{ DRM_FORMAT_NV16, __DRI_IMAGE_FORMAT_NONE,
__DRI_IMAGE_COMPONENTS_Y_UV, PIPE_FORMAT_NV12, 2,

View file

@ -258,6 +258,7 @@ update_shader_samplers(struct st_context *st,
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
case PIPE_FORMAT_Y210:
case PIPE_FORMAT_Y212:
case PIPE_FORMAT_Y216:

View file

@ -190,6 +190,7 @@ st_get_sampler_views(struct st_context *st,
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
/* we need one additional R16G16 view: */
tmpl.format = PIPE_FORMAT_RG1616_UNORM;
tmpl.swizzle_g = PIPE_SWIZZLE_Y; /* tmpl from Y plane is R16 */

View file

@ -73,6 +73,7 @@ is_format_supported(struct pipe_screen *screen, enum pipe_format format,
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
supported = screen->is_format_supported(screen, PIPE_FORMAT_R16_UNORM,
PIPE_TEXTURE_2D, nr_samples,
nr_storage_samples, usage) &&
@ -312,6 +313,7 @@ st_bind_egl_image(struct gl_context *ctx,
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
texFormat = MESA_FORMAT_R_UNORM16;
texObj->RequiredTextureImageUnits = 2;
break;

View file

@ -89,6 +89,7 @@ st_get_external_sampler_key(struct st_context *st, struct gl_program *prog)
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
key.lower_nv12 |= (1 << unit);
break;
case PIPE_FORMAT_IYUV:

View file

@ -392,6 +392,7 @@ st_get_sampler_view_format(const struct st_context *st,
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
format = PIPE_FORMAT_R16_UNORM;
break;
case PIPE_FORMAT_Y210:

View file

@ -421,6 +421,7 @@ PIPE_FORMAT_Y16_U16_V16_444_UNORM , planar3, 1, 1, 1, , , , , xy
PIPE_FORMAT_P010 , planar2, 1, 1, 1, , , , , xyzw, yuv
PIPE_FORMAT_P012 , planar2, 1, 1, 1, , , , , xyzw, yuv
PIPE_FORMAT_P016 , planar2, 1, 1, 1, , , , , xyzw, yuv
PIPE_FORMAT_P030 , planar2, 1, 1, 1, , , , , xyzw, yuv
PIPE_FORMAT_Y210 , subsampled, 2, 1, 1, x64 , , , , xyz1, yuv
PIPE_FORMAT_Y212 , subsampled, 2, 1, 1, x64 , , , , xyz1, yuv

Can't render this file because it contains an unexpected character in line 8 and column 3.

View file

@ -1391,6 +1391,7 @@ util_format_get_plane_format(enum pipe_format format, unsigned plane)
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
case PIPE_FORMAT_Y16_U16V16_422_UNORM:
return !plane ? PIPE_FORMAT_R16_UNORM : PIPE_FORMAT_R16G16_UNORM;
default:
@ -1411,6 +1412,7 @@ util_format_get_plane_width(enum pipe_format format, unsigned plane,
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
case PIPE_FORMAT_Y8_U8_V8_422_UNORM:
case PIPE_FORMAT_Y8_U8V8_422_UNORM:
case PIPE_FORMAT_Y16_U16_V16_420_UNORM:
@ -1434,6 +1436,7 @@ util_format_get_plane_height(enum pipe_format format, unsigned plane,
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
case PIPE_FORMAT_Y16_U16_V16_420_UNORM:
return !plane ? height : (height + 1) / 2;
case PIPE_FORMAT_YV16:

View file

@ -90,6 +90,7 @@ def has_access(format):
'p010',
'p012',
'p016',
'p030',
'y210',
'y212',
'y216',

View file

@ -475,6 +475,7 @@ enum pipe_format {
PIPE_FORMAT_P010,
PIPE_FORMAT_P012,
PIPE_FORMAT_P016,
PIPE_FORMAT_P030,
PIPE_FORMAT_Y210,
PIPE_FORMAT_Y212,
@ -623,6 +624,7 @@ pipe_format_to_chroma_format(enum pipe_format format)
case PIPE_FORMAT_P010:
case PIPE_FORMAT_P012:
case PIPE_FORMAT_P016:
case PIPE_FORMAT_P030:
case PIPE_FORMAT_Y16_U16_V16_420_UNORM:
return PIPE_VIDEO_CHROMA_FORMAT_420;
case PIPE_FORMAT_UYVY: