blob: c1592842c6fbb3f38301093c3ded1d53d2735f79 [file] [log] [blame]
From 3ed3f6a783fdfff3fa1b567888518dcbda7eb2a3 Mon Sep 17 00:00:00 2001
From: Ed Baker <edward.baker@intel.com>
Date: Thu, 26 Aug 2021 16:27:39 -0700
Subject: [PATCH] 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
<snip>
[ 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 <edward.baker@intel.com>
---
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 80278bb..2948d5b 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:
--
2.25.1