[Libva] [PATCH][libva-intel-driver] i965_validate_config: return unsupported profile

Charles, Daniel daniel.charles at intel.com
Wed Oct 19 17:30:13 UTC 2016


I'll add the patch to the test for jpeg and avc to adapt to this
change as the tests currently only account for UNSUPPORTED_ENTRYPOINT

Thanks for the feedback Haihao and Artie.

-- 
Daniel.

On Wed, Oct 19, 2016 at 6:25 AM, Xiang, Haihao <haihao.xiang at intel.com> wrote:
>
> Neither JPEG decoding nor JPEG encoding is supported on SNB, JPEG cases will fail on SNB if don't change JPEG cases accordingly. On the old g4x, AVC cases will fail too.
>
> Thanks
> Haihao
>
>
>>-----Original Message-----
>>From: Libva [mailto:libva-bounces at lists.freedesktop.org] On Behalf Of Eoff,
>>Ullysses A
>>Sent: Wednesday, October 19, 2016 2:26 AM
>>To: Charles, Daniel <daniel.charles at intel.com>
>>Cc: libva at lists.freedesktop.org
>>Subject: Re: [Libva] [PATCH][libva-intel-driver] i965_validate_config: return
>>unsupported profile
>>
>>
>>> -----Original Message-----
>>> From: Charles, Daniel [mailto:daniel.charles at intel.com]
>>> Sent: Tuesday, October 18, 2016 11:09 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 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.
>>>
>>
>>Right now, there are tests for AVC and JPEG that create a config for encode
>>and decode entrypoints.  Each test defines its own expected result of
>>CreateConfig and compares with the actual result.  If there is a platform that
>>doesn't support any of the entrypoints for AVC or JPEG, then the expected
>>result will be calculated wrong (i.e. the test expectation is not taking into
>>account your new changes).  (See i965_avce_config_test.cpp,
>>i965_avcd_config_test.cpp, i965_jpege_config_test.cpp and
>>i965_jpegd_config_test.cpp).
>>
>>U. Artie
>>
>>> --
>>> 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
>>_______________________________________________
>>Libva mailing list
>>Libva at lists.freedesktop.org
>>https://lists.freedesktop.org/mailman/listinfo/libva


More information about the Libva mailing list