mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
frontends/va: adding PIPE_FORMAT_P012
Signed-off-by: David (Ming Qiang) Wu <David.Wu3@amd.com> Reviewed-by: David Rosca <david.rosca@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32383>
This commit is contained in:
parent
284952b864
commit
9c6d14d736
5 changed files with 21 additions and 1 deletions
|
|
@ -91,6 +91,7 @@ vl_video_buffer_plane_order(enum pipe_format format)
|
|||
case PIPE_FORMAT_YUYV:
|
||||
case PIPE_FORMAT_UYVY:
|
||||
case PIPE_FORMAT_P010:
|
||||
case PIPE_FORMAT_P012:
|
||||
case PIPE_FORMAT_P016:
|
||||
return const_resource_plane_order_YUV;
|
||||
|
||||
|
|
|
|||
|
|
@ -141,6 +141,11 @@ static unsigned int get_screen_supported_va_rt_formats(struct pipe_screen *pscre
|
|||
entrypoint))
|
||||
supported_rt_formats |= VA_RT_FORMAT_YUV420_10BPP;
|
||||
|
||||
if (pscreen->is_video_format_supported(pscreen, PIPE_FORMAT_P012,
|
||||
profile,
|
||||
entrypoint))
|
||||
supported_rt_formats |= VA_RT_FORMAT_YUV420_12;
|
||||
|
||||
if (pscreen->is_video_format_supported(pscreen, PIPE_FORMAT_Y8_400_UNORM,
|
||||
profile,
|
||||
entrypoint))
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ static const VAImageFormat formats[] =
|
|||
{
|
||||
{VA_FOURCC('N','V','1','2')},
|
||||
{VA_FOURCC('P','0','1','0')},
|
||||
{VA_FOURCC('P','0','1','2')},
|
||||
{VA_FOURCC('P','0','1','6')},
|
||||
{VA_FOURCC('I','4','2','0')},
|
||||
{VA_FOURCC('Y','V','1','2')},
|
||||
|
|
@ -153,6 +154,7 @@ vlVaCreateImage(VADriverContextP ctx, VAImageFormat *format, int width, int heig
|
|||
break;
|
||||
|
||||
case VA_FOURCC('P','0','1','0'):
|
||||
case VA_FOURCC('P','0','1','2'):
|
||||
case VA_FOURCC('P','0','1','6'):
|
||||
img->num_planes = 2;
|
||||
img->pitches[0] = w * 2;
|
||||
|
|
@ -359,6 +361,7 @@ vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image)
|
|||
|
||||
case VA_FOURCC('N','V','1','2'):
|
||||
case VA_FOURCC('P','0','1','0'):
|
||||
case VA_FOURCC('P','0','1','2'):
|
||||
case VA_FOURCC('P','0','1','6'):
|
||||
{
|
||||
/* In some gallium platforms, the stride and offset are different*/
|
||||
|
|
|
|||
|
|
@ -585,6 +585,9 @@ vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config_id,
|
|||
vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_P016, attribs, &i);
|
||||
}
|
||||
|
||||
if (config->rt_format & VA_RT_FORMAT_YUV420_12)
|
||||
vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_P012, attribs, &i);
|
||||
|
||||
if (config->rt_format & VA_RT_FORMAT_YUV400)
|
||||
vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_Y8_400_UNORM, attribs, &i);
|
||||
|
||||
|
|
@ -1048,6 +1051,8 @@ rt_format_to_fourcc(uint32_t format)
|
|||
return VA_FOURCC_NV12;
|
||||
case VA_RT_FORMAT_YUV420_10:
|
||||
return VA_FOURCC_P010;
|
||||
case VA_RT_FORMAT_YUV420_12:
|
||||
return VA_FOURCC_P012;
|
||||
case VA_RT_FORMAT_YUV422:
|
||||
return VA_FOURCC_YUY2;
|
||||
case VA_RT_FORMAT_YUV444:
|
||||
|
|
@ -1572,6 +1577,8 @@ static uint32_t pipe_format_to_drm_format(enum pipe_format format)
|
|||
return DRM_FORMAT_NV12;
|
||||
case PIPE_FORMAT_P010:
|
||||
return DRM_FORMAT_P010;
|
||||
case PIPE_FORMAT_P012:
|
||||
return DRM_FORMAT_P012;
|
||||
case PIPE_FORMAT_YUYV:
|
||||
case PIPE_FORMAT_R8G8_R8B8_UNORM:
|
||||
return DRM_FORMAT_YUYV;
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
#define VL_VA_DRIVER(ctx) ((vlVaDriver *)ctx->pDriverData)
|
||||
#define VL_VA_PSCREEN(ctx) (VL_VA_DRIVER(ctx)->vscreen->pscreen)
|
||||
|
||||
#define VL_VA_MAX_IMAGE_FORMATS 21
|
||||
#define VL_VA_MAX_IMAGE_FORMATS 22
|
||||
#define VL_VA_ENC_GOP_COEFF 16
|
||||
|
||||
#define UINT_TO_PTR(x) ((void*)(uintptr_t)(x))
|
||||
|
|
@ -126,6 +126,8 @@ VaFourccToPipeFormat(unsigned format)
|
|||
return PIPE_FORMAT_NV12;
|
||||
case VA_FOURCC('P','0','1','0'):
|
||||
return PIPE_FORMAT_P010;
|
||||
case VA_FOURCC('P','0','1','2'):
|
||||
return PIPE_FORMAT_P012;
|
||||
case VA_FOURCC('P','0','1','6'):
|
||||
return PIPE_FORMAT_P016;
|
||||
case VA_FOURCC('I','4','2','0'):
|
||||
|
|
@ -177,6 +179,8 @@ PipeFormatToVaFourcc(enum pipe_format p_format)
|
|||
return VA_FOURCC('N','V','1','2');
|
||||
case PIPE_FORMAT_P010:
|
||||
return VA_FOURCC('P','0','1','0');
|
||||
case PIPE_FORMAT_P012:
|
||||
return VA_FOURCC('P','0','1','2');
|
||||
case PIPE_FORMAT_P016:
|
||||
return VA_FOURCC('P','0','1','6');
|
||||
case PIPE_FORMAT_IYUV:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue