[Mesa-dev] [PATCH v4 5/9] st/va: handle Video Post Processing for configs
Julien Isorce
j.isorce at samsung.com
Fri Oct 30 03:54:15 PDT 2015
-----Original Message-----
From: Christian König [mailto:deathsimple at vodafone.de]
Sent: 29 October 2015 19:26
To: Julien Isorce; mesa-dev at lists.freedesktop.org
Subject: Re: [PATCH v4 5/9] st/va: handle Video Post Processing for configs
On 29.10.2015 18:40, Julien Isorce wrote:
> Add support for VA_PROFILE_NONE and VAEntrypointVideoProc in the 4
> following functions:
>
> vlVaQueryConfigProfiles
> vlVaQueryConfigEntrypoints
> vlVaCreateConfig
> vlVaQueryConfigAttributes
>
> Signed-off-by: Julien Isorce <j.isorce at samsung.com>
Reviewed-by: Christian König <christian.koenig at amd.com>
>> But you should reorder the patch, e.g. commit patch #6 first and then
patch #5. Otherwise we have a state where the state tracker claims to
support post processing but doesn't.
Ack
>>Christian.
> ---
> src/gallium/state_trackers/va/config.c | 20 ++++++++++++++++++++
> src/gallium/state_trackers/va/va_private.h | 7 +++++--
> 2 files changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/state_trackers/va/config.c
> b/src/gallium/state_trackers/va/config.c
> index 5030f9e..0f47aac 100644
> --- a/src/gallium/state_trackers/va/config.c
> +++ b/src/gallium/state_trackers/va/config.c
> @@ -52,6 +52,9 @@ vlVaQueryConfigProfiles(VADriverContextP ctx, VAProfile
*profile_list, int *num_
> profile_list[(*num_profiles)++] = vap;
> }
>
> + /* Support postprocessing through vl_compositor */
> + profile_list[(*num_profiles)++] = VAProfileNone;
> +
> return VA_STATUS_SUCCESS;
> }
>
> @@ -67,6 +70,11 @@ vlVaQueryConfigEntrypoints(VADriverContextP ctx,
> VAProfile profile,
>
> *num_entrypoints = 0;
>
> + if (profile == VAProfileNone) {
> + entrypoint_list[(*num_entrypoints)++] = VAEntrypointVideoProc;
> + return VA_STATUS_SUCCESS;
> + }
> +
> p = ProfileToPipe(profile);
> if (p == PIPE_VIDEO_PROFILE_UNKNOWN)
> return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
> @@ -118,6 +126,11 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile
profile, VAEntrypoint entrypoin
> if (!ctx)
> return VA_STATUS_ERROR_INVALID_CONTEXT;
>
> + if (profile == VAProfileNone && entrypoint == VAEntrypointVideoProc) {
> + *config_id = PIPE_VIDEO_PROFILE_UNKNOWN;
> + return VA_STATUS_SUCCESS;
> + }
> +
> p = ProfileToPipe(profile);
> if (p == PIPE_VIDEO_PROFILE_UNKNOWN)
> return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
> @@ -151,6 +164,13 @@ vlVaQueryConfigAttributes(VADriverContextP ctx,
VAConfigID config_id, VAProfile
> return VA_STATUS_ERROR_INVALID_CONTEXT;
>
> *profile = PipeToProfile(config_id);
> +
> + if (config_id == PIPE_VIDEO_PROFILE_UNKNOWN) {
> + *entrypoint = VAEntrypointVideoProc;
> + *num_attribs = 0;
> + return VA_STATUS_SUCCESS;
> + }
> +
> *entrypoint = VAEntrypointVLD;
>
> *num_attribs = 1;
> diff --git a/src/gallium/state_trackers/va/va_private.h
> b/src/gallium/state_trackers/va/va_private.h
> index 68cb703..3a02e58 100644
> --- a/src/gallium/state_trackers/va/va_private.h
> +++ b/src/gallium/state_trackers/va/va_private.h
> @@ -146,10 +146,11 @@ PipeToProfile(enum pipe_video_profile profile)
> return VAProfileH264Main;
> case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:
> return VAProfileH264High;
> - case PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED:
> - return VAProfileNone;
> case PIPE_VIDEO_PROFILE_HEVC_MAIN:
> return VAProfileHEVCMain;
> + case PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED:
> + case PIPE_VIDEO_PROFILE_UNKNOWN:
> + return VAProfileNone;
> default:
> assert(0);
> return -1;
> @@ -182,6 +183,8 @@ ProfileToPipe(VAProfile profile)
> return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH;
> case VAProfileHEVCMain:
> return PIPE_VIDEO_PROFILE_HEVC_MAIN;
> + case VAProfileNone:
> + return PIPE_VIDEO_PROFILE_UNKNOWN;
> default:
> return PIPE_VIDEO_PROFILE_UNKNOWN;
> }
More information about the mesa-dev
mailing list