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.char...@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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libva