Decoder and VPP are enabled with this patch.
Encoder will be enabled later.
Fix https://github.com/01org/intel-vaapi-driver/issues/80
Signed-off-by: Peng.Chen <peng.c.chen@intel.com>
Signed-off-by: Yu, JianKang <jiankang.yu@intel.com>
Signed-off-by: Wang, TianTian<tiantian.wang@intel.com>
assert(standard_select == HCP_CODEC_HEVC);
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
dri_bo *bo;
unsigned int i;
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
BEGIN_BCS_BATCH(batch, 104);
OUT_BUFFER_MA_TARGET(NULL); /* DW 89..91, ignore for HEVC */
OUT_BUFFER_MA_TARGET(NULL); /* DW 92..94, ignore for HEVC */
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
for(i = 0;i < 9;i++)
OUT_BCS_BATCH(batch, 0);
/* set zero for encoder */
loop_filter_across_tiles_enabled_flag = 0;
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
BEGIN_BCS_BATCH(batch, 31);
seq_param->log2_min_luma_coding_block_size_minus3);
OUT_BCS_BATCH(batch, 0); /* DW 3, ignored */
OUT_BCS_BATCH(batch,
- (IS_KBL(i965->intel.device_info)? 1 : 0) << 27 | /* CU packet structure is 0 for SKL */
+ ((IS_KBL(i965->intel.device_info) || IS_GLK(i965->intel.device_info)) ?
+ 1 : 0) << 27 | /* CU packet structure is 0 for SKL */
seq_param->seq_fields.bits.strong_intra_smoothing_enabled_flag << 26 |
pic_param->pic_fields.bits.transquant_bypass_enabled_flag << 25 |
seq_param->seq_fields.bits.amp_enabled_flag << 23 |
0 << 30 |
minframesize); /* DW 18, min frame size units */
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
int i = 0;
}
}
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
BEGIN_BCS_BATCH(batch, 11);
0); /* Ignored for decoding */
OUT_BCS_BATCH(batch, 0); /* PAK-BSE data start offset */
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
struct i965_driver_data *i965 = i965_driver_data(ctx);
int len_in_dwords = 3;
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
len_in_dwords = 5;
if (batch == NULL)
OUT_BCS_BATCH(batch, (lcu_y << 16) | lcu_x); /* LCU for Y*/
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
assert((codec == HCP_CODEC_HEVC) || (codec == HCP_CODEC_VP9));
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
- if(IS_KBL(i965->intel.device_info))
+ if(IS_KBL(i965->intel.device_info) ||
+ IS_GLK(i965->intel.device_info))
{
if(codec == HCP_CODEC_VP9)
OUT_BCS_BATCH(batch, 1<<6);
},
};
+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 = 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_h264_decoding = 1,
+ .has_h264_encoding = 0,
+ .has_vc1_decoding = 1,
+ .has_jpeg_decoding = 1,
+ .has_jpeg_encoding = 0,
+ .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 = 0,
+ .has_h264_mvc_encoding = 0,
+ .has_hevc_decoding = 1,
+ .has_hevc_encoding = 0,
+ .has_hevc10_decoding = 1,
+ .has_hevc10_encoding = 0,
+ .has_vp9_decoding = 1,
+ .has_vpp_p010 = 1,
+ .has_vp9_encoding = 0,
+
+ .num_filters = 5,
+ .filters = {
+ { VAProcFilterNoiseReduction, I965_RING_VEBOX },
+ { VAProcFilterDeinterlacing, I965_RING_VEBOX },
+ { VAProcFilterSharpening, I965_RING_NULL },
+ { VAProcFilterColorBalance, I965_RING_VEBOX},
+ { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
+ },
+};
+
struct hw_codec_info *
i965_get_codec_info(int devid)
{
.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,
+};
+
const struct intel_device_info *
i965_get_device_info(int devid)
{
CHIPSET(0x5908, kbl, kbl, "Intel(R) Kabylake")
CHIPSET(0x5923, kbl, kbl, "Intel(R) Kabylake")
CHIPSET(0x5927, kbl, kbl, "Intel(R) Kabylake")
+CHIPSET(0x3184, glk, glk, "Intel(R) Geminilake")
+CHIPSET(0x3185, glk, glk, "Intel(R) Geminilake")
unsigned int is_skylake : 1; /* gen9 */
unsigned int is_broxton : 1; /* gen9 */
unsigned int is_kabylake : 1; /* gen9p5 */
+ unsigned int is_glklake : 1; /* gen9p5 lp*/
};
struct intel_driver_data
#define IS_KBL(device_info) (device_info->is_kabylake)
+#define IS_GLK(device_info) (device_info->is_glklake)
+
#endif /* _INTEL_DRIVER_H_ */