/* Extra set of chroma formats supported for JPEG encoding (beyond YUV 4:2:0) */
#define EXTRA_JPEG_ENC_CHROMA_FORMATS \
(VA_RT_FORMAT_YUV400| VA_RT_FORMAT_YUV422 | VA_RT_FORMAT_YUV444 | VA_RT_FORMAT_RGB32)
-
+
+#define EXTRA_HEVC_DEC_CHROMA_FORMATS \
+ (VA_RT_FORMAT_YUV420_10BPP)
+
+#define EXTRA_VP9_DEC_CHROMA_FORMATS \
+ (VA_RT_FORMAT_YUV420_10BPP)
+
/* Defines VA profile as a 32-bit unsigned integer mask */
#define VA_PROFILE_MASK(PROFILE) \
(1U << VAProfile##PROFILE)
+#define VP9_PROFILE_MASK(PROFILE) \
+ (1U << PROFILE)
+
extern struct hw_context *i965_proc_context_init(VADriverContextP, struct object_config *);
extern struct hw_context *g4x_dec_hw_context_init(VADriverContextP, struct object_config *);
extern bool genx_render_init(VADriverContextP);
.max_width = 2048,
.max_height = 2048,
.min_linear_wpitch = 16,
- .min_linear_hpitch = 16,
+ .min_linear_hpitch = 4,
.has_mpeg2_decoding = 1,
.max_width = 2048,
.max_height = 2048,
.min_linear_wpitch = 16,
- .min_linear_hpitch = 16,
+ .min_linear_hpitch = 4,
.has_mpeg2_decoding = 1,
.has_h264_decoding = 1,
.max_width = 2048,
.max_height = 2048,
.min_linear_wpitch = 16,
- .min_linear_hpitch = 16,
+ .min_linear_hpitch = 4,
.h264_mvc_dec_profiles = VA_PROFILE_MASK(H264StereoHigh),
.h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
.has_tiled_surface = 1,
.has_di_motion_adptive = 1,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
+
.num_filters = 2,
.filters = {
{ VAProcFilterNoiseReduction, I965_RING_NULL },
.max_width = 4096,
.max_height = 4096,
.min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
+ .min_linear_hpitch = 4,
.h264_mvc_dec_profiles = VA_PROFILE_MASK(H264StereoHigh),
.h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
.has_accelerated_putimage = 1,
.has_tiled_surface = 1,
.has_di_motion_adptive = 1,
+ .has_di_motion_compensated = 1,
+
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
.num_filters = 2,
.filters = {
.max_width = 4096,
.max_height = 4096,
.min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
+ .min_linear_hpitch = 4,
.h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
+ VA_PROFILE_MASK(H264MultiviewHigh)),
.h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
.jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
.has_di_motion_compensated = 1,
.has_h264_mvc_encoding = 1,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
+
.num_filters = 5,
.filters = {
{ VAProcFilterNoiseReduction, I965_RING_VEBOX },
.max_width = 4096,
.max_height = 4096,
.min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
+ .min_linear_hpitch = 4,
.h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
+ VA_PROFILE_MASK(H264MultiviewHigh)),
.h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
.jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
.has_vp8_decoding = 1,
.has_h264_mvc_encoding = 1,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
+
.num_filters = 5,
.filters = {
{ VAProcFilterNoiseReduction, I965_RING_VEBOX },
},
};
+extern struct hw_context *gen9_dec_hw_context_init(VADriverContextP, struct object_config *);
static struct hw_codec_info chv_hw_codec_info = {
- .dec_hw_context_init = gen8_dec_hw_context_init,
+ .dec_hw_context_init = gen9_dec_hw_context_init,
.enc_hw_context_init = gen8_enc_hw_context_init,
.proc_hw_context_init = gen75_proc_context_init,
.render_init = gen8_render_init,
.max_width = 4096,
.max_height = 4096,
.min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
+ .min_linear_hpitch = 4,
.h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
+ VA_PROFILE_MASK(H264MultiviewHigh)),
.h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
.jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
.jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
.has_vp8_decoding = 1,
.has_vp8_encoding = 1,
.has_h264_mvc_encoding = 1,
+ .has_hevc_decoding = 1,
+
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
.num_filters = 5,
.filters = {
},
};
-extern struct hw_context *gen9_dec_hw_context_init(VADriverContextP, struct object_config *);
+static void gen9_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info);
+
extern struct hw_context *gen9_enc_hw_context_init(VADriverContextP, struct object_config *);
extern void gen9_post_processing_context_init(VADriverContextP, void *, struct intel_batchbuffer *);
+extern void gen9_max_resolution(struct i965_driver_data *, struct object_config *, int *, int *);
static struct hw_codec_info skl_hw_codec_info = {
.dec_hw_context_init = gen9_dec_hw_context_init,
.enc_hw_context_init = gen9_enc_hw_context_init,
.proc_hw_context_init = gen75_proc_context_init,
.render_init = gen9_render_init,
.post_processing_context_init = gen9_post_processing_context_init,
+ .max_resolution = gen9_max_resolution,
+ .preinit_hw_codec = gen9_hw_codec_preinit,
+
+ .max_width = 4096, /* default. See max_resolution */
+ .max_height = 4096, /* default. See max_resolution */
+ .min_linear_wpitch = 64,
+ .min_linear_hpitch = 4,
+
+ .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
+ VA_PROFILE_MASK(H264MultiviewHigh)),
+ .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
+ .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
+ .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
+
+ .has_mpeg2_decoding = 1,
+ .has_mpeg2_encoding = 1,
+ .has_h264_decoding = 1,
+ .has_h264_encoding = 1,
+ .has_vc1_decoding = 1,
+ .has_jpeg_decoding = 1,
+ .has_jpeg_encoding = 1,
+ .has_vpp = 1,
+ .has_accelerated_getimage = 1,
+ .has_accelerated_putimage = 1,
+ .has_tiled_surface = 1,
+ .has_di_motion_adptive = 1,
+ .has_di_motion_compensated = 1,
+ .has_vp8_decoding = 1,
+ .has_vp8_encoding = 1,
+ .has_h264_mvc_encoding = 1,
+ .has_hevc_decoding = 1,
+ .has_hevc_encoding = 1,
+ .has_lp_h264_encoding = 1,
+ .has_fei_h264_encoding = 1,
+ .has_h264_preenc = 1,
+
+ .lp_h264_brc_mode = VA_RC_CQP,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR | VA_RC_MB,
+
+ .num_filters = 5,
+ .filters = {
+ { VAProcFilterNoiseReduction, I965_RING_VEBOX },
+ { VAProcFilterDeinterlacing, I965_RING_VEBOX },
+ { VAProcFilterSharpening, I965_RING_NULL }, /* need to rebuild the shader for BDW */
+ { VAProcFilterColorBalance, I965_RING_VEBOX},
+ { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
+ },
+};
+
+
+static struct hw_codec_info bxt_hw_codec_info = {
+ .dec_hw_context_init = gen9_dec_hw_context_init,
+ .enc_hw_context_init = gen9_enc_hw_context_init,
+ .proc_hw_context_init = gen75_proc_context_init,
+ .render_init = gen9_render_init,
+ .post_processing_context_init = gen9_post_processing_context_init,
+ .max_resolution = gen9_max_resolution,
+ .preinit_hw_codec = gen9_hw_codec_preinit,
+
+ .max_width = 4096, /* default. See max_resolution */
+ .max_height = 4096, /* default. See max_resolution */
+ .min_linear_wpitch = 64,
+ .min_linear_hpitch = 4,
+
+ .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
+ VA_PROFILE_MASK(H264MultiviewHigh)),
+ .vp9_dec_profiles = VP9_PROFILE_MASK(0),
+
+ .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
+ .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
+ .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
+ .hevc_dec_chroma_formats = EXTRA_HEVC_DEC_CHROMA_FORMATS,
+
+ .has_mpeg2_decoding = 1,
+ .has_h264_decoding = 1,
+ .has_h264_encoding = 1,
+ .has_vc1_decoding = 1,
+ .has_jpeg_decoding = 1,
+ .has_jpeg_encoding = 1,
+ .has_vpp = 1,
+ .has_accelerated_getimage = 1,
+ .has_accelerated_putimage = 1,
+ .has_tiled_surface = 1,
+ .has_di_motion_adptive = 1,
+ .has_di_motion_compensated = 1,
+ .has_vp8_decoding = 1,
+ .has_vp8_encoding = 1,
+ .has_h264_mvc_encoding = 1,
+ .has_hevc_decoding = 1,
+ .has_hevc_encoding = 1,
+ .has_hevc10_decoding = 1,
+ .has_vp9_decoding = 1,
+ .has_vpp_p010 = 1,
+ .has_lp_h264_encoding = 1,
+
+ .lp_h264_brc_mode = VA_RC_CQP,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR | VA_RC_MB,
+
+ .num_filters = 5,
+ .filters = {
+ { VAProcFilterNoiseReduction, I965_RING_VEBOX },
+ { VAProcFilterDeinterlacing, I965_RING_VEBOX },
+ { VAProcFilterSharpening, I965_RING_NULL },
+ { VAProcFilterColorBalance, I965_RING_VEBOX},
+ { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
+ },
+};
+
+static struct hw_codec_info kbl_hw_codec_info = {
+ .dec_hw_context_init = gen9_dec_hw_context_init,
+ .enc_hw_context_init = gen9_enc_hw_context_init,
+ .proc_hw_context_init = gen75_proc_context_init,
+ .render_init = gen9_render_init,
+ .post_processing_context_init = gen9_post_processing_context_init,
+ .max_resolution = gen9_max_resolution,
+ .preinit_hw_codec = gen9_hw_codec_preinit,
+
+ .max_width = 4096, /* default. See max_resolution */
+ .max_height = 4096, /* default. See max_resolution */
+ .min_linear_wpitch = 64,
+ .min_linear_hpitch = 4,
+
+ .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
+ 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,
+ .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
+ .hevc_dec_chroma_formats = EXTRA_HEVC_DEC_CHROMA_FORMATS,
+ .vp9_dec_chroma_formats = EXTRA_VP9_DEC_CHROMA_FORMATS,
+
+ .has_mpeg2_decoding = 1,
+ .has_mpeg2_encoding = 1,
+ .has_h264_decoding = 1,
+ .has_h264_encoding = 1,
+ .has_vc1_decoding = 1,
+ .has_jpeg_decoding = 1,
+ .has_jpeg_encoding = 1,
+ .has_vpp = 1,
+ .has_accelerated_getimage = 1,
+ .has_accelerated_putimage = 1,
+ .has_tiled_surface = 1,
+ .has_di_motion_adptive = 1,
+ .has_di_motion_compensated = 1,
+ .has_vp8_decoding = 1,
+ .has_vp8_encoding = 1,
+ .has_h264_mvc_encoding = 1,
+ .has_hevc_decoding = 1,
+ .has_hevc_encoding = 1,
+ .has_hevc10_encoding = 1,
+ .has_hevc10_decoding = 1,
+ .has_vp9_decoding = 1,
+ .has_vpp_p010 = 1,
+ .has_vp9_encoding = 1,
+ .has_lp_h264_encoding = 1,
+
+ .lp_h264_brc_mode = VA_RC_CQP,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR | VA_RC_MB,
+
+ .vp9_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
+
+ .num_filters = 5,
+ .filters = {
+ { VAProcFilterNoiseReduction, I965_RING_VEBOX },
+ { VAProcFilterDeinterlacing, I965_RING_VEBOX },
+ { VAProcFilterSharpening, I965_RING_NULL },
+ { VAProcFilterColorBalance, I965_RING_VEBOX},
+ { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
+ },
+};
+
+static struct hw_codec_info glk_hw_codec_info = {
+ .dec_hw_context_init = gen9_dec_hw_context_init,
+ .enc_hw_context_init = gen9_enc_hw_context_init,
+ .proc_hw_context_init = gen75_proc_context_init,
+ .render_init = gen9_render_init,
+ .post_processing_context_init = gen9_post_processing_context_init,
+
+ .max_resolution = gen9_max_resolution,
+ .preinit_hw_codec = gen9_hw_codec_preinit,
.max_width = 4096,
.max_height = 4096,
.min_linear_wpitch = 64,
+ .min_linear_hpitch = 4,
+
+ .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
+ 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,
+ .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
+ .hevc_dec_chroma_formats = EXTRA_HEVC_DEC_CHROMA_FORMATS,
+ .vp9_dec_chroma_formats = EXTRA_VP9_DEC_CHROMA_FORMATS,
+
+ .has_mpeg2_decoding = 1,
+ .has_h264_decoding = 1,
+ .has_h264_encoding = 1,
+ .has_vc1_decoding = 1,
+ .has_jpeg_decoding = 1,
+ .has_jpeg_encoding = 1,
+ .has_vpp = 1,
+ .has_accelerated_getimage = 1,
+ .has_accelerated_putimage = 1,
+ .has_tiled_surface = 1,
+ .has_di_motion_adptive = 1,
+ .has_di_motion_compensated = 1,
+ .has_vp8_decoding = 1,
+ .has_vp8_encoding = 1,
+ .has_h264_mvc_encoding = 1,
+ .has_hevc_decoding = 1,
+ .has_hevc_encoding = 1,
+ .has_hevc10_decoding = 1,
+ .has_hevc10_encoding = 1,
+ .has_vp9_decoding = 1,
+ .has_vpp_p010 = 1,
+ .has_vp9_encoding = 1,
+ .has_lp_h264_encoding = 1,
+
+ .lp_h264_brc_mode = VA_RC_CQP,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR | VA_RC_MB,
+
+ .vp9_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
+
+ .num_filters = 5,
+ .filters = {
+ { VAProcFilterNoiseReduction, I965_RING_VEBOX },
+ { VAProcFilterDeinterlacing, I965_RING_VEBOX },
+ { VAProcFilterSharpening, I965_RING_NULL },
+ { VAProcFilterColorBalance, I965_RING_VEBOX},
+ { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
+ },
+};
+
+static struct hw_codec_info cfl_hw_codec_info = {
+ .dec_hw_context_init = gen9_dec_hw_context_init,
+ .enc_hw_context_init = gen9_enc_hw_context_init,
+ .proc_hw_context_init = gen75_proc_context_init,
+ .render_init = gen9_render_init,
+ .post_processing_context_init = gen9_post_processing_context_init,
+ .max_resolution = gen9_max_resolution,
+ .preinit_hw_codec = gen9_hw_codec_preinit,
+
+ .max_width = 4096, /* default. See max_resolution */
+ .max_height = 4096, /* default. See max_resolution */
+ .min_linear_wpitch = 64,
.min_linear_hpitch = 16,
.h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
+ 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,
.jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
+ .hevc_dec_chroma_formats = EXTRA_HEVC_DEC_CHROMA_FORMATS,
+ .vp9_dec_chroma_formats = EXTRA_VP9_DEC_CHROMA_FORMATS,
.has_mpeg2_decoding = 1,
.has_mpeg2_encoding = 1,
.has_vp8_encoding = 1,
.has_h264_mvc_encoding = 1,
.has_hevc_decoding = 1,
+ .has_hevc_encoding = 1,
+ .has_hevc10_encoding = 1,
+ .has_hevc10_decoding = 1,
+ .has_vp9_decoding = 1,
+ .has_vpp_p010 = 1,
+ .has_vp9_encoding = 1,
+ .has_lp_h264_encoding = 1,
+
+ .lp_h264_brc_mode = VA_RC_CQP,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR | VA_RC_MB,
+
+ .vp9_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
.num_filters = 5,
.filters = {
{ VAProcFilterNoiseReduction, I965_RING_VEBOX },
{ VAProcFilterDeinterlacing, I965_RING_VEBOX },
- { VAProcFilterSharpening, I965_RING_NULL }, /* need to rebuild the shader for BDW */
+ { VAProcFilterSharpening, I965_RING_NULL },
+ { VAProcFilterColorBalance, I965_RING_VEBOX},
+ { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
+ },
+};
+
+static struct hw_codec_info cnl_hw_codec_info = {
+ .dec_hw_context_init = gen9_dec_hw_context_init,
+ .enc_hw_context_init = gen9_enc_hw_context_init,
+ .proc_hw_context_init = gen75_proc_context_init,
+ .render_init = gen9_render_init,
+ .post_processing_context_init = gen9_post_processing_context_init,
+ .max_resolution = gen9_max_resolution,
+ .preinit_hw_codec = gen9_hw_codec_preinit,
+
+ .max_width = 4096, /* default. See max_resolution */
+ .max_height = 4096, /* default. See max_resolution */
+ .min_linear_wpitch = 64,
+ .min_linear_hpitch = 16,
+
+ .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) | 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,
+ .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
+ .hevc_dec_chroma_formats = EXTRA_HEVC_DEC_CHROMA_FORMATS,
+ .vp9_dec_chroma_formats = EXTRA_VP9_DEC_CHROMA_FORMATS,
+
+ .has_mpeg2_decoding = 1,
+ .has_mpeg2_encoding = 1,
+ .has_h264_decoding = 1,
+ .has_h264_encoding = 1,
+ .has_vc1_decoding = 1,
+ .has_jpeg_decoding = 1,
+ .has_jpeg_encoding = 1,
+ .has_vpp = 1,
+ .has_accelerated_getimage = 1,
+ .has_accelerated_putimage = 1,
+ .has_tiled_surface = 1,
+ .has_di_motion_adptive = 1,
+ .has_di_motion_compensated = 1,
+ .has_vp8_decoding = 1,
+ .has_vp8_encoding = 1,
+ .has_h264_mvc_encoding = 1,
+ .has_hevc_decoding = 1,
+ .has_hevc_encoding = 1,
+ .has_hevc10_decoding = 1,
+ .has_hevc10_encoding = 1,
+ .has_vp9_decoding = 1,
+ .has_vpp_p010 = 1,
+ .has_vp9_encoding = 1,
+ .has_lp_h264_encoding = 1,
+ .has_lp_vp9_encoding = 1,
+
+ .lp_h264_brc_mode = VA_RC_CQP,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR | VA_RC_MB,
+
+ .vp9_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
+
+ .num_filters = 5,
+ .filters = {
+ { VAProcFilterNoiseReduction, I965_RING_VEBOX },
+ { VAProcFilterDeinterlacing, I965_RING_VEBOX },
+ { VAProcFilterSharpening, I965_RING_NULL },
{ VAProcFilterColorBalance, I965_RING_VEBOX},
{ VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
},
.urb_size = 4096,
.max_wm_threads = 64, /* per PSD */
+
+ .is_skylake = 1,
+};
+
+static const struct intel_device_info bxt_device_info = {
+ .gen = 9,
+
+ .urb_size = 4096,
+ .max_wm_threads = 64, /* per PSD */
+ .is_broxton = 1,
+};
+
+static const struct intel_device_info kbl_device_info = {
+ .gen = 9,
+
+ .urb_size = 4096,
+ .max_wm_threads = 64, /* per PSD */
+
+ .is_kabylake = 1,
+};
+
+static const struct intel_device_info glk_device_info = {
+ .gen = 9,
+
+ .urb_size = 4096,
+ .max_wm_threads = 64, /* per PSD */
+
+ .is_glklake = 1,
+};
+
+static const struct intel_device_info cfl_device_info = {
+ .gen = 9,
+
+ .urb_size = 4096,
+ .max_wm_threads = 64, /* per PSD */
+
+ .is_cfllake = 1,
+};
+
+static const struct intel_device_info cnl_device_info = {
+ .gen = 10,
+
+ .urb_size = 4096,
+ .max_wm_threads = 64, /* per PSD */
};
const struct intel_device_info *
}
static void cpuid(unsigned int op,
- uint32_t *eax, uint32_t *ebx,
- uint32_t *ecx, uint32_t *edx)
+ uint32_t *eax, uint32_t *ebx,
+ uint32_t *ecx, uint32_t *edx)
{
- __cpuid_count(op, 0, *eax, *ebx, *ecx, *edx);
+ __cpuid_count(op, 0, *eax, *ebx, *ecx, *edx);
}
/*
/* If the max extended CPUID info is less than 0x80000004, fail */
if (rdata[0] < 0x80000004)
- return -EINVAL;
+ return -EINVAL;
/* obtain the CPUID string */
cpuid(0x80000002, &rdata[0], &rdata[1], &rdata[2], &rdata[3]);
* It is captured by /proc/cpuinfo and the space character is stripped.
*/
const static char *hsw_cpu_hook_list[] = {
-"Intel(R)Pentium(R)3556U",
-"Intel(R)Pentium(R)3560Y",
-"Intel(R)Pentium(R)3550M",
-"Intel(R)Celeron(R)2980U",
-"Intel(R)Celeron(R)2955U",
-"Intel(R)Celeron(R)2950M",
+ "Intel(R)Pentium(R)3556U",
+ "Intel(R)Pentium(R)3560Y",
+ "Intel(R)Pentium(R)3550M",
+ "Intel(R)Celeron(R)2980U",
+ "Intel(R)Celeron(R)2955U",
+ "Intel(R)Celeron(R)2950M",
};
static void hsw_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info)
/* strip the cpufreq info */
model_ptr = model_string;
tmp_ptr = strstr(model_ptr, "@");
-
+
if (tmp_ptr)
*tmp_ptr = '\0';
model_ptr = model_string;
model_len = strlen(model_string);
for (i = 0; i < model_len; i++) {
- if (model_string[i] != ' ') {
- *model_ptr = model_string[i];
- model_ptr++;
- }
+ if (model_string[i] != ' ') {
+ *model_ptr = model_string[i];
+ model_ptr++;
+ }
}
*model_ptr = '\0';
model_ptr = (char *)hsw_cpu_hook_list[i];
if (strlen(model_ptr) != model_len)
- continue;
+ continue;
if (strncasecmp(model_string, model_ptr, model_len) == 0) {
found = true;
break;
- }
+ }
}
if (found) {
- codec_info->has_h264_encoding = 0;
- codec_info->has_h264_mvc_encoding = 0;
- codec_info->has_mpeg2_encoding = 0;
+ codec_info->has_h264_encoding = 0;
+ codec_info->has_h264_mvc_encoding = 0;
+ codec_info->has_mpeg2_encoding = 0;
}
return;
}
* It is captured by /proc/cpuinfo and the space character is stripped.
*/
const static char *gen6_cpu_hook_list[] = {
-"Intel(R)Celeron(R)CPU847",
-"Intel(R)Celeron(R)CPU867",
+ "Intel(R)Celeron(R)CPU847",
+ "Intel(R)Celeron(R)CPU867",
};
static void gen6_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info)
model_ptr = model_string;
model_len = strlen(model_string);
for (i = 0; i < model_len; i++) {
- if (model_string[i] != ' ') {
- *model_ptr = model_string[i];
- model_ptr++;
- }
+ if (model_string[i] != ' ') {
+ *model_ptr = model_string[i];
+ model_ptr++;
+ }
}
*model_ptr = '\0';
* It is captured by /proc/cpuinfo and the space character is stripped.
*/
const static char *gen7_cpu_hook_list[] = {
-"Intel(R)Celeron(R)CPU1007U",
+ "Intel(R)Celeron(R)CPU1007U",
+ "Intel(R)Celeron(R)CPU1037U",
+ "Intel(R)Pentium(R)CPUG2130",
};
static void gen7_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info)
model_ptr = model_string;
model_len = strlen(model_string);
for (i = 0; i < model_len; i++) {
- if (model_string[i] != ' ') {
- *model_ptr = model_string[i];
- model_ptr++;
- }
+ if (model_string[i] != ' ') {
+ *model_ptr = model_string[i];
+ model_ptr++;
+ }
}
*model_ptr = '\0';
if (strncasecmp(model_string, model_ptr, model_len) == 0) {
found = true;
break;
- }
+ }
}
if (found) {
}
return;
}
+
+static void gen9_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info)
+{
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+
+ if (i965->intel.has_huc && codec_info->has_lp_h264_encoding)
+ codec_info->lp_h264_brc_mode |= (VA_RC_CBR | VA_RC_VBR);
+
+ if (i965->intel.has_huc && codec_info->has_lp_vp9_encoding)
+ codec_info->lp_vp9_brc_mode |= (VA_RC_CQP | VA_RC_CBR | VA_RC_VBR);
+}