Discussion:
[PATCH][libva-intel-driver] i965_driver_info: add vp9_enc_profiles
(too old to reply)
Daniel Charles
2016-11-17 01:20:02 UTC
Permalink
Not all profiles for vp9 are supported by the encoder and user needs
to know about it

Signed-off-by: Daniel Charles <***@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
Zhao Yakui
2016-11-17 01:49:51 UTC
Permalink
Post by Daniel Charles
Not all profiles for vp9 are supported by the encoder and user needs
to know about it
When user tries to call the
vaQueryConfigProfiles/vaQueryConfigEntryPoints, it will export the
supported profile by vp9 encoding.

Of course this patch looks good to me as it adds more restrict check for
VP9 encoding. This will help to check the wrong parameter passed by the
user.

Add: Reviewed-by: Zhao Yakui <***@intel.com>

Thanks
Post by Daniel Charles
---
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 100644help to avoid
--- 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;
Xiang, Haihao
2016-11-17 04:51:39 UTC
Permalink
Applied, thanks
Post by Zhao Yakui
Post by Daniel Charles
Not all profiles for vp9 are supported by the encoder and user needs
to know about it
When user tries to call the
vaQueryConfigProfiles/vaQueryConfigEntryPoints, it will export the
supported profile by vp9 encoding.
Of course this patch looks good to me as it adds more restrict check for
VP9 encoding. This will help to check the wrong parameter passed by the
user.
Thanks
Post by Daniel Charles
---
  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 100644help to avoid
--- 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-
Post by Daniel Charles
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-
Post by Daniel Charles
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;
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Loading...