st/mesa: Don't map all P01X DRM formats to P016
Allow gallium drivers to distinguish between the P010, P012, and P016 DRM formats. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6486>
This commit is contained in:
parent
9efd71466d
commit
c3c99f4571
|
@ -491,11 +491,11 @@ static const struct dri2_format_mapping dri2_format_table[] = {
|
|||
{ 1, 1, 1, __DRI_IMAGE_FORMAT_GR88, 2 } } },
|
||||
|
||||
{ DRM_FORMAT_P010, __DRI_IMAGE_FORMAT_NONE,
|
||||
__DRI_IMAGE_COMPONENTS_Y_UV, PIPE_FORMAT_P016, 2,
|
||||
__DRI_IMAGE_COMPONENTS_Y_UV, PIPE_FORMAT_P010, 2,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R16, 2 },
|
||||
{ 1, 1, 1, __DRI_IMAGE_FORMAT_GR1616, 4 } } },
|
||||
{ DRM_FORMAT_P012, __DRI_IMAGE_FORMAT_NONE,
|
||||
__DRI_IMAGE_COMPONENTS_Y_UV, PIPE_FORMAT_P016, 2,
|
||||
__DRI_IMAGE_COMPONENTS_Y_UV, PIPE_FORMAT_P012, 2,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R16, 2 },
|
||||
{ 1, 1, 1, __DRI_IMAGE_FORMAT_GR1616, 4 } } },
|
||||
{ DRM_FORMAT_P016, __DRI_IMAGE_FORMAT_NONE,
|
||||
|
|
|
@ -464,6 +464,7 @@ enum pipe_format {
|
|||
PIPE_FORMAT_FXT1_RGBA,
|
||||
|
||||
PIPE_FORMAT_P010,
|
||||
PIPE_FORMAT_P012,
|
||||
PIPE_FORMAT_P016,
|
||||
|
||||
PIPE_FORMAT_R10G10B10X2_UNORM,
|
||||
|
@ -582,6 +583,7 @@ pipe_format_to_chroma_format(enum pipe_format format)
|
|||
case PIPE_FORMAT_YV12:
|
||||
case PIPE_FORMAT_IYUV:
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
case PIPE_FORMAT_Y16_U16_V16_420_UNORM:
|
||||
return PIPE_VIDEO_CHROMA_FORMAT_420;
|
||||
|
|
|
@ -316,6 +316,7 @@ update_shader_samplers(struct st_context *st,
|
|||
switch (st_get_view_format(stObj)) {
|
||||
case PIPE_FORMAT_NV12:
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
case PIPE_FORMAT_YUYV:
|
||||
case PIPE_FORMAT_UYVY:
|
||||
|
|
|
@ -196,6 +196,7 @@ update_textures(struct st_context *st,
|
|||
st->pipe->create_sampler_view(st->pipe, stObj->pt->next, &tmpl);
|
||||
break;
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
/* we need one additional R16G16 view: */
|
||||
tmpl.format = PIPE_FORMAT_RG1616_UNORM;
|
||||
|
|
|
@ -69,6 +69,8 @@ is_format_supported(struct pipe_screen *screen, enum pipe_format format,
|
|||
PIPE_TEXTURE_2D, nr_samples,
|
||||
nr_storage_samples, usage);
|
||||
break;
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
supported = screen->is_format_supported(screen, PIPE_FORMAT_R16_UNORM,
|
||||
PIPE_TEXTURE_2D, nr_samples,
|
||||
|
@ -250,6 +252,8 @@ st_bind_egl_image(struct gl_context *ctx,
|
|||
texFormat = MESA_FORMAT_R_UNORM8;
|
||||
texObj->RequiredTextureImageUnits = 2;
|
||||
break;
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
texFormat = MESA_FORMAT_R_UNORM16;
|
||||
texObj->RequiredTextureImageUnits = 2;
|
||||
|
|
|
@ -80,6 +80,7 @@ st_get_external_sampler_key(struct st_context *st, struct gl_program *prog)
|
|||
switch (format) {
|
||||
case PIPE_FORMAT_NV12:
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
key.lower_nv12 |= (1 << unit);
|
||||
break;
|
||||
|
|
|
@ -500,6 +500,7 @@ get_sampler_view_format(struct st_context *st,
|
|||
format = PIPE_FORMAT_R8_UNORM;
|
||||
break;
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
format = PIPE_FORMAT_R16_UNORM;
|
||||
break;
|
||||
|
|
|
@ -396,6 +396,7 @@ PIPE_FORMAT_Y16_U16V16_422_UNORM , planar2, 1, 1, 1, , , , , xy
|
|||
PIPE_FORMAT_Y16_U16_V16_444_UNORM , planar3, 1, 1, 1, , , , , xyzw, yuv
|
||||
|
||||
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
|
||||
|
||||
# Usually used to implement IA44 and AI44 formats in video decoding
|
||||
|
|
Can't render this file because it contains an unexpected character in line 8 and column 3.
|
|
@ -1319,6 +1319,7 @@ util_format_get_plane_format(enum pipe_format format, unsigned plane)
|
|||
case PIPE_FORMAT_Y16_U16_V16_444_UNORM:
|
||||
return PIPE_FORMAT_R16_UNORM;
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
case PIPE_FORMAT_Y16_U16V16_422_UNORM:
|
||||
return !plane ? PIPE_FORMAT_R16_UNORM : PIPE_FORMAT_R16G16_UNORM;
|
||||
|
@ -1338,6 +1339,7 @@ util_format_get_plane_width(enum pipe_format format, unsigned plane,
|
|||
case PIPE_FORMAT_NV12:
|
||||
case PIPE_FORMAT_NV21:
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
case PIPE_FORMAT_Y8_U8_V8_422_UNORM:
|
||||
case PIPE_FORMAT_Y8_U8V8_422_UNORM:
|
||||
|
@ -1360,6 +1362,7 @@ util_format_get_plane_height(enum pipe_format format, unsigned plane,
|
|||
case PIPE_FORMAT_NV12:
|
||||
case PIPE_FORMAT_NV21:
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
case PIPE_FORMAT_Y16_U16_V16_420_UNORM:
|
||||
return !plane ? height : (height + 1) / 2;
|
||||
|
|
Loading…
Reference in New Issue