From 3ed3f6a783fdfff3fa1b567888518dcbda7eb2a3 Mon Sep 17 00:00:00 2001 From: Ed Baker Date: Thu, 26 Aug 2021 16:27:39 -0700 Subject: Fix VP9.2 config verification This commit addresses the following test_va_api failures collected on a Braswell with the hybrid codec enabled. Fixes #534. localhost ~ # test_va_api [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/210, where GetParam() = (21:VAProfileVP9Profile2, 1:VAEntrypointVLD) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/211, where GetParam() = (21:VAProfileVP9Profile2, 2:VAEntrypointIZZ) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/212, where GetParam() = (21:VAProfileVP9Profile2, 3:VAEntrypointIDCT) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/213, where GetParam() = (21:VAProfileVP9Profile2, 4:VAEntrypointMoComp) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/214, where GetParam() = (21:VAProfileVP9Profile2, 5:VAEntrypointDeblocking) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/215, where GetParam() = (21:VAProfileVP9Profile2, 6:VAEntrypointEncSlice) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/216, where GetParam() = (21:VAProfileVP9Profile2, 7:VAEntrypointEncPicture) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/217, where GetParam() = (21:VAProfileVP9Profile2, 8:VAEntrypointEncSliceLP) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/218, where GetParam() = (21:VAProfileVP9Profile2, 10:VAEntrypointVideoProc) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigWithAttributes/219, where GetParam() = (21:VAProfileVP9Profile2, 11:VAEntrypointFEI) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/210, where GetParam() = (21:VAProfileVP9Profile2, 1:VAEntrypointVLD) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/211, where GetParam() = (21:VAProfileVP9Profile2, 2:VAEntrypointIZZ) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/212, where GetParam() = (21:VAProfileVP9Profile2, 3:VAEntrypointIDCT) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/213, where GetParam() = (21:VAProfileVP9Profile2, 4:VAEntrypointMoComp) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/214, where GetParam() = (21:VAProfileVP9Profile2, 5:VAEntrypointDeblocking) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/215, where GetParam() = (21:VAProfileVP9Profile2, 6:VAEntrypointEncSlice) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/216, where GetParam() = (21:VAProfileVP9Profile2, 7:VAEntrypointEncPicture) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/217, where GetParam() = (21:VAProfileVP9Profile2, 8:VAEntrypointEncSliceLP) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/218, where GetParam() = (21:VAProfileVP9Profile2, 10:VAEntrypointVideoProc) [ FAILED ] GetCreateConfig/VAAPIGetCreateConfig.CreateConfigNoAttributes/219, where GetParam() = (21:VAProfileVP9Profile2, 11:VAEntrypointFEI) Signed-off-by: Ed Baker --- src/i965_drv_video.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c index 80278bb7..2948d5b0 100644 --- a/src/i965_drv_video.c +++ b/src/i965_drv_video.c @@ -885,10 +885,6 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile, profile == VAProfileVP9Profile0 && entrypoint == VAEntrypointEncSliceLP)) { va_status = VA_STATUS_SUCCESS; - } else if (profile == VAProfileVP9Profile0 && - entrypoint == VAEntrypointVLD && - i965->wrapper_pdrvctx) { - va_status = VA_STATUS_SUCCESS; } else if (!HAS_VP9_DECODING_PROFILE(i965, profile) && !HAS_VP9_ENCODING(i965) && !HAS_LP_VP9_ENCODING(i965) && @@ -898,6 +894,27 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile, va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; } + if (i965->wrapper_pdrvctx && va_status != VA_STATUS_SUCCESS) { + VAEntrypoint wrapper_entrypoints[5] = {0}; + int32_t wrapper_num_entrypoints = 0; + VADriverContextP pdrvctx = i965->wrapper_pdrvctx; + + CALL_VTABLE(pdrvctx, va_status, + vaQueryConfigEntrypoints(pdrvctx, + profile, + wrapper_entrypoints, + &wrapper_num_entrypoints)); + + if (va_status == VA_STATUS_SUCCESS) { + va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; + for (int i = 0; i < wrapper_num_entrypoints; i++) { + if (entrypoint == wrapper_entrypoints[i]) { + va_status = VA_STATUS_SUCCESS; + } + } + } + } + break; default: -- cgit v1.2.1