[Libva] [PATCH][libva-intel-driver] i965_validate_config: return unsupported profile
Charles, Daniel
daniel.charles at intel.com
Tue Oct 18 18:09:09 UTC 2016
On Tue, Oct 18, 2016 at 10:48 AM, Eoff, Ullysses A
<ullysses.a.eoff at intel.com> wrote:
>> -----Original Message-----
>> From: Charles, Daniel [mailto:daniel.charles at intel.com]
>> Sent: Tuesday, October 18, 2016 10:20 AM
>> To: Eoff, Ullysses A <ullysses.a.eoff at intel.com>
>> Cc: libva at lists.freedesktop.org
>> Subject: Re: [Libva] [PATCH][libva-intel-driver] i965_validate_config: return unsupported profile
>>
>> On Tue, Oct 18, 2016 at 8:25 AM, Eoff, Ullysses A
>> <ullysses.a.eoff at intel.com> wrote:
>> > Please run the tests... I suspect this patch will cause some to fail. Those tests will need updated too.
>> >
>>
>> Ran the test suite on ToT, no regression found with this patch.
>>
>
> Ah yes, I see why now. The AVC and JPEG config tests still pass on most HW because UNSUPPORTED_PROFILE is only returned if *both* encode *and* decode are unsupported. Thus, if there is such HW that doesn't support one or the other then those tests will be regressed.
I am not sure I follow you here.
Unsupported Profile is sent when neither encoder and decoder are
supported (VC1 is only decoder, VPP is a special case and VP9 decoder
can also be hybrid on some h/w). When h/w only supports one of them
(regardless which it is), it should return UNSUPPORTED_ENTRYPOINT as
profile is supported at least once. This patch is not changing this
last scenario. My testing was done on a h/w that has Jpeg Decoder but
no Jpeg Encoder and everything is okay.
--
Daniel.
>
>> --
>> Daniel.
>> > U. Artie
>> >
>> >> -----Original Message-----
>> >> From: Libva [mailto:libva-bounces at lists.freedesktop.org] On Behalf Of Daniel Charles
>> >> Sent: Monday, October 17, 2016 5:45 PM
>> >> To: libva at lists.freedesktop.org
>> >> Subject: [Libva] [PATCH][libva-intel-driver] i965_validate_config: return unsupported profile
>> >>
>> >> When all the profiles are not supported return
>> >> VA_STATUS_ERROR_UNSUPPORTED_PROFILE instead of
>> >> VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT.
>> >>
>> >> Also change the style on the code modified to be common
>> >> on all cases
>> >>
>> >> Signed-off-by: Daniel Charles <daniel.charles at intel.com>
>> >> ---
>> >> src/i965_drv_video.c | 49 ++++++++++++++++++++++++++++++++++++++++---------
>> >> 1 file changed, 40 insertions(+), 9 deletions(-)
>> >>
>> >> diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
>> >> index fbf2cda..0830ae0 100644
>> >> --- a/src/i965_drv_video.c
>> >> +++ b/src/i965_drv_video.c
>> >> @@ -711,6 +711,8 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
>> >> if ((HAS_MPEG2_DECODING(i965) && entrypoint == VAEntrypointVLD) ||
>> >> (HAS_MPEG2_ENCODING(i965) && entrypoint == VAEntrypointEncSlice)) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> + } else if (!HAS_MPEG2_DECODING(i965) && !HAS_MPEG2_ENCODING(i965)){
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> }
>> >> @@ -723,6 +725,9 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
>> >> (HAS_H264_ENCODING(i965) && entrypoint == VAEntrypointEncSlice) ||
>> >> (HAS_LP_H264_ENCODING(i965) && entrypoint == VAEntrypointEncSliceLP)) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> + } else if (!HAS_H264_DECODING(i965) && !HAS_H264_ENCODING(i965) &&
>> >> + !HAS_LP_H264_ENCODING(i965)){
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> }
>> >> @@ -733,6 +738,8 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
>> >> case VAProfileVC1Advanced:
>> >> if (HAS_VC1_DECODING(i965) && entrypoint == VAEntrypointVLD) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> + } else if (!HAS_VC1_DECODING(i965)) {
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> }
>> >> @@ -741,6 +748,8 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
>> >> case VAProfileNone:
>> >> if (HAS_VPP(i965) && VAEntrypointVideoProc == entrypoint) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> + } else if (!HAS_VPP(i965)){
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> }
>> >> @@ -750,6 +759,8 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
>> >> if ((HAS_JPEG_DECODING(i965) && entrypoint == VAEntrypointVLD) ||
>> >> (HAS_JPEG_ENCODING(i965) && entrypoint == VAEntrypointEncPicture)) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> + } else if (!HAS_JPEG_DECODING(i965) && !HAS_JPEG_ENCODING(i965)){
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> }
>> >> @@ -759,6 +770,8 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
>> >> if ((HAS_VP8_DECODING(i965) && entrypoint == VAEntrypointVLD) ||
>> >> (HAS_VP8_ENCODING(i965) && entrypoint == VAEntrypointEncSlice)) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> + } else if (!HAS_VP8_DECODING(i965) && !HAS_VP8_ENCODING(i965)){
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> }
>> >> @@ -768,8 +781,12 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
>> >> case VAProfileH264StereoHigh:
>> >> if ((HAS_H264_MVC_DECODING_PROFILE(i965, profile) &&
>> >> entrypoint == VAEntrypointVLD) ||
>> >> - (HAS_H264_MVC_ENCODING(i965) && entrypoint == VAEntrypointEncSlice)) {
>> >> + (HAS_H264_MVC_ENCODING(i965) &&
>> >> + entrypoint == VAEntrypointEncSlice)) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> + } else if(!HAS_H264_MVC_DECODING_PROFILE(i965, profile) &&
>> >> + !HAS_H264_MVC_ENCODING(i965)) {
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> }
>> >> @@ -778,32 +795,46 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
>> >>
>> >> case VAProfileHEVCMain:
>> >> if ((HAS_HEVC_DECODING(i965) && (entrypoint == VAEntrypointVLD))||
>> >> - (HAS_HEVC_ENCODING(i965) && (entrypoint == VAEntrypointEncSlice)))
>> >> + (HAS_HEVC_ENCODING(i965) && (entrypoint == VAEntrypointEncSlice))) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> - else
>> >> + } else if (!HAS_HEVC_DECODING(i965) && !HAS_HEVC_ENCODING(i965)) {
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> + } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> + }
>> >>
>> >> break;
>> >>
>> >> case VAProfileHEVCMain10:
>> >> if ((HAS_HEVC10_DECODING(i965) && (entrypoint == VAEntrypointVLD))||
>> >> - (HAS_HEVC10_ENCODING(i965) && (entrypoint == VAEntrypointEncSlice)))
>> >> + (HAS_HEVC10_ENCODING(i965) &&
>> >> + (entrypoint == VAEntrypointEncSlice))) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> - else
>> >> + } else if (!HAS_HEVC10_DECODING(i965) && !HAS_HEVC10_ENCODING(i965)) {
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> + } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> + }
>> >>
>> >> break;
>> >>
>> >> case VAProfileVP9Profile0:
>> >> case VAProfileVP9Profile2:
>> >> - if ((HAS_VP9_DECODING_PROFILE(i965, profile)) && (entrypoint == VAEntrypointVLD))
>> >> + if ((HAS_VP9_DECODING_PROFILE(i965, profile)) &&
>> >> + (entrypoint == VAEntrypointVLD)) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> - else if ((HAS_VP9_ENCODING(i965)) && (entrypoint == VAEntrypointEncSlice))
>> >> + } else if ((HAS_VP9_ENCODING(i965)) &&
>> >> + (entrypoint == VAEntrypointEncSlice)) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> - else if ((profile == VAProfileVP9Profile0) && i965->wrapper_pdrvctx)
>> >> + } else if (profile == VAProfileVP9Profile0 && i965->wrapper_pdrvctx) {
>> >> va_status = VA_STATUS_SUCCESS;
>> >> - else
>> >> + } else if(!HAS_VP9_DECODING_PROFILE(i965, profile) &&
>> >> + !HAS_VP9_ENCODING(i965) && !i965->wrapper_pdrvctx) {
>> >> + va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
>> >> + } else {
>> >> va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
>> >> + }
>> >> +
>> >> break;
>> >>
>> >> default:
>> >> --
>> >> 2.5.5
>> >>
>> >> _______________________________________________
>> >> Libva mailing list
>> >> Libva at lists.freedesktop.org
>> >> https://lists.freedesktop.org/mailman/listinfo/libva
More information about the Libva
mailing list