[Libva] [PATCH][libva-intel-driver] i965_driver_info: add vp9_enc_profiles

Daniel Charles daniel.charles at intel.com
Thu Nov 17 01:20:02 UTC 2016


Not all profiles for vp9 are supported by the encoder and user needs
to know about it

Signed-off-by: Daniel Charles <daniel.charles at intel.com>
---
 src/i965_device_info.c | 1 +
 src/i965_drv_video.c   | 2 +-
 src/i965_drv_video.h   | 5 +++++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/i965_device_info.c b/src/i965_device_info.c
index 4db6c51..13ac49c 100644
--- a/src/i965_device_info.c
+++ b/src/i965_device_info.c
@@ -447,6 +447,7 @@ static struct hw_codec_info kbl_hw_codec_info = {
                               VA_PROFILE_MASK(H264MultiviewHigh)),
     .vp9_dec_profiles = VP9_PROFILE_MASK(0) |
                         VP9_PROFILE_MASK(2),
+    .vp9_enc_profiles = VP9_PROFILE_MASK(0),
 
     .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
     .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index e17c295..df4a0c6 100644
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -823,7 +823,7 @@ i965_validate_config(VADriverContextP ctx, VAProfile profile,
         if ((HAS_VP9_DECODING_PROFILE(i965, profile)) &&
             (entrypoint == VAEntrypointVLD)) {
             va_status = VA_STATUS_SUCCESS;
-        } else if ((HAS_VP9_ENCODING(i965)) &&
+        } else if ((HAS_VP9_ENCODING_PROFILE(i965, profile)) &&
                    (entrypoint == VAEntrypointEncSlice)) {
             va_status = VA_STATUS_SUCCESS;
         } else if (profile == VAProfileVP9Profile0 && i965->wrapper_pdrvctx) {
diff --git a/src/i965_drv_video.h b/src/i965_drv_video.h
index 5ef6d27..d928d30 100644
--- a/src/i965_drv_video.h
+++ b/src/i965_drv_video.h
@@ -149,6 +149,10 @@
 #define HAS_VP9_ENCODING(ctx)          ((ctx)->codec_info->has_vp9_encoding && \
                                          (ctx)->intel.has_bsd)
 
+#define HAS_VP9_ENCODING_PROFILE(ctx, profile)                     \
+    (HAS_VP9_ENCODING(ctx) &&                                      \
+     ((ctx)->codec_info->vp9_enc_profiles & (1U << (profile - VAProfileVP9Profile0))))
+
 struct i965_surface
 {
     struct object_base *base;
@@ -452,6 +456,7 @@ struct hw_codec_info
 
     unsigned int h264_mvc_dec_profiles;
     unsigned int vp9_dec_profiles;
+    unsigned int vp9_enc_profiles;
 
     unsigned int h264_dec_chroma_formats;
     unsigned int jpeg_dec_chroma_formats;
-- 
2.5.5



More information about the Libva mailing list