.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_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 = {
{ 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) |
- 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 = 128,
- .min_linear_hpitch = 16,
+ .min_linear_wpitch = 64,
+ .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 },
.max_width = 4096,
.max_height = 4096,
- .min_linear_wpitch = 128,
- .min_linear_hpitch = 16,
+ .min_linear_wpitch = 64,
+ .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_h264_mvc_encoding = 1,
.has_hevc_decoding = 1,
+ .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
+
.num_filters = 5,
.filters = {
{ VAProcFilterNoiseReduction, I965_RING_VEBOX },
},
};
+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,
- .max_height = 4096,
- .min_linear_wpitch = 128,
- .min_linear_hpitch = 16,
+ .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)),
+ 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_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 = {
.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 = 128,
- .min_linear_hpitch = 16,
+ .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)),
+ VA_PROFILE_MASK(H264MultiviewHigh)),
.vp9_dec_profiles = VP9_PROFILE_MASK(0),
.h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
.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 = {
.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 = 128,
+ .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_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 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,
.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 = {
.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 *
i965_get_device_info(int devid)
{
}
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);
}
* 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';
* 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';
}
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);
+}