[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