Skip to content
This repository was archived by the owner on Jan 31, 2025. It is now read-only.

Commit 3827427

Browse files
YuJiankangyakuizhao
authored andcommitted
Add the video encoder support for GLK
HEVC encoder will be enabled later. Fix #111 Signed-off-by: Zhao Yakui <[email protected]> Signed-off-by: Wang, TianTian<[email protected]> Signed-off-by: jkyu <[email protected]>
1 parent 41e585c commit 3827427

File tree

3 files changed

+35
-19
lines changed

3 files changed

+35
-19
lines changed

src/gen9_avc_encoder.c

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2098,7 +2098,8 @@ gen9_avc_init_brc_const_data(VADriverContextP ctx,
20982098
memcpy(data,(unsigned char *)gen9_avc_intra_scaling_factor,size * sizeof(unsigned char));
20992099
}
21002100

2101-
if (IS_KBL(i965->intel.device_info))
2101+
if (IS_KBL(i965->intel.device_info)||
2102+
IS_GLK(i965->intel.device_info))
21022103
{
21032104
data += size;
21042105

@@ -2572,8 +2573,9 @@ gen9_avc_send_surface_brc_frame_update(VADriverContextP ctx,
25722573
if (IS_SKL(i965->intel.device_info)||
25732574
IS_BXT(i965->intel.device_info))
25742575
is_g95 = 0;
2575-
else if (IS_KBL(i965->intel.device_info))
2576-
is_g95 = 1;
2576+
else if (IS_KBL(i965->intel.device_info)||
2577+
IS_GLK(i965->intel.device_info))
2578+
is_g95 = 1;
25772579

25782580
/* brc history buffer*/
25792581
gen9_add_buffer_gpe_surface(ctx,
@@ -3226,7 +3228,8 @@ gen9_avc_set_curbe_mbenc(VADriverContextP ctx,
32263228

32273229
}
32283230
}
3229-
else if (IS_KBL(i965->intel.device_info))
3231+
else if (IS_KBL(i965->intel.device_info)||
3232+
IS_GLK(i965->intel.device_info))
32303233
{
32313234
cmd.g95 = (gen95_avc_mbenc_curbe_data *)i965_gpe_context_map_curbe(gpe_context);
32323235
if(!cmd.g95)
@@ -3766,8 +3769,9 @@ gen9_avc_send_surface_mbenc(VADriverContextP ctx,
37663769
if (IS_SKL(i965->intel.device_info)||
37673770
IS_BXT(i965->intel.device_info))
37683771
is_g95 = 0;
3769-
else if (IS_KBL(i965->intel.device_info))
3770-
is_g95 = 1;
3772+
else if (IS_KBL(i965->intel.device_info)||
3773+
IS_GLK(i965->intel.device_info))
3774+
is_g95 = 1;
37713775

37723776
obj_surface = encode_state->reconstructed_object;
37733777

@@ -5022,7 +5026,8 @@ gen9_avc_kernel_init_scaling(VADriverContextP ctx,
50225026
kernel_param.curbe_size = sizeof(gen9_avc_scaling4x_curbe_data);
50235027
kernel_param.inline_data_size = sizeof(gen9_avc_scaling4x_curbe_data);
50245028
}
5025-
else if (IS_KBL(i965->intel.device_info))
5029+
else if (IS_KBL(i965->intel.device_info)||
5030+
IS_GLK(i965->intel.device_info))
50265031
{
50275032
kernel_param.curbe_size = sizeof(gen95_avc_scaling4x_curbe_data);
50285033
kernel_param.inline_data_size = sizeof(gen95_avc_scaling4x_curbe_data);
@@ -5140,7 +5145,8 @@ gen9_avc_kernel_init_mbenc(VADriverContextP ctx,
51405145
IS_BXT(i965->intel.device_info)) {
51415146
curbe_size = sizeof(gen9_avc_mbenc_curbe_data);
51425147
}
5143-
else if (IS_KBL(i965->intel.device_info)) {
5148+
else if (IS_KBL(i965->intel.device_info) ||
5149+
IS_GLK(i965->intel.device_info)) {
51445150
curbe_size = sizeof(gen9_avc_mbenc_curbe_data);
51455151
}
51465152

@@ -6210,7 +6216,8 @@ gen9_avc_kernel_init(VADriverContextP ctx,
62106216
if (IS_SKL(i965->intel.device_info)||
62116217
IS_BXT(i965->intel.device_info))
62126218
generic_ctx->pfn_set_curbe_scaling4x = gen9_avc_set_curbe_scaling4x;
6213-
else if (IS_KBL(i965->intel.device_info))
6219+
else if (IS_KBL(i965->intel.device_info)||
6220+
IS_GLK(i965->intel.device_info))
62146221
generic_ctx->pfn_set_curbe_scaling4x = gen95_avc_set_curbe_scaling4x;
62156222

62166223
}
@@ -7809,7 +7816,8 @@ gen9_avc_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *en
78097816
generic_ctx->enc_kernel_ptr = (void *)skl_avc_encoder_kernels;
78107817
generic_ctx->enc_kernel_size = sizeof(skl_avc_encoder_kernels);
78117818
}
7812-
else if (IS_KBL(i965->intel.device_info)) {
7819+
else if (IS_KBL(i965->intel.device_info) ||
7820+
IS_GLK(i965->intel.device_info)) {
78137821
generic_ctx->enc_kernel_ptr = (void *)kbl_avc_encoder_kernels;
78147822
generic_ctx->enc_kernel_size = sizeof(kbl_avc_encoder_kernels);
78157823
}
@@ -8004,7 +8012,8 @@ gen9_avc_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *en
80048012
avc_state->brc_const_data_surface_width = 64;
80058013
avc_state->brc_const_data_surface_height = 44;
80068014
}
8007-
else if (IS_KBL(i965->intel.device_info)) {
8015+
else if (IS_KBL(i965->intel.device_info)||
8016+
IS_GLK(i965->intel.device_info)) {
80088017
avc_state->brc_const_data_surface_width = 64;
80098018
avc_state->brc_const_data_surface_height = 53;
80108019
//gen95

src/gen9_vdenc.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2993,7 +2993,8 @@ gen9_vdenc_mfx_avc_insert_slice_packed_data(VADriverContextP ctx,
29932993
/* For the Normal H264 */
29942994

29952995
if (slice_index &&
2996-
IS_KBL(i965->intel.device_info)) {
2996+
(IS_KBL(i965->intel.device_info) ||
2997+
IS_GLK(i965->intel.device_info))) {
29972998
saved_macroblock_address = slice_params->macroblock_address;
29982999
slice_params->macroblock_address = 0;
29993000
}
@@ -3006,7 +3007,8 @@ gen9_vdenc_mfx_avc_insert_slice_packed_data(VADriverContextP ctx,
30063007
slice_header1 = slice_header;
30073008

30083009
if (slice_index &&
3009-
IS_KBL(i965->intel.device_info)) {
3010+
(IS_KBL(i965->intel.device_info) ||
3011+
IS_GLK(i965->intel.device_info))) {
30103012
slice_params->macroblock_address = saved_macroblock_address;
30113013
}
30123014

@@ -3030,7 +3032,8 @@ gen9_vdenc_mfx_avc_insert_slice_packed_data(VADriverContextP ctx,
30303032
unsigned char *slice_header1 = NULL;
30313033

30323034
if (slice_index &&
3033-
IS_KBL(i965->intel.device_info)) {
3035+
(IS_KBL(i965->intel.device_info) ||
3036+
IS_GLK(i965->intel.device_info))) {
30343037
slice_header_index = (encode_state->slice_header_index[0] & SLICE_PACKED_DATA_INDEX_MASK);
30353038
}
30363039

@@ -3894,7 +3897,8 @@ vdenc_hw_interfaces_init(VADriverContextP ctx,
38943897
{
38953898
struct i965_driver_data *i965 = i965_driver_data(ctx);
38963899

3897-
if (IS_KBL(i965->intel.device_info)) {
3900+
if (IS_KBL(i965->intel.device_info) ||
3901+
IS_GLK(i965->intel.device_info)) {
38983902
gen95_vdenc_hw_interfaces_init(ctx, encoder_context, vdenc_context);
38993903
} else {
39003904
gen9_vdenc_hw_interfaces_init(ctx, encoder_context, vdenc_context);

src/i965_device_info.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -527,26 +527,29 @@ static struct hw_codec_info glk_hw_codec_info = {
527527

528528
.has_mpeg2_decoding = 1,
529529
.has_h264_decoding = 1,
530-
.has_h264_encoding = 0,
530+
.has_h264_encoding = 1,
531531
.has_vc1_decoding = 1,
532532
.has_jpeg_decoding = 1,
533-
.has_jpeg_encoding = 0,
533+
.has_jpeg_encoding = 1,
534534
.has_vpp = 1,
535535
.has_accelerated_getimage = 1,
536536
.has_accelerated_putimage = 1,
537537
.has_tiled_surface = 1,
538538
.has_di_motion_adptive = 1,
539539
.has_di_motion_compensated = 1,
540540
.has_vp8_decoding = 1,
541-
.has_vp8_encoding = 0,
541+
.has_vp8_encoding = 1,
542542
.has_h264_mvc_encoding = 0,
543543
.has_hevc_decoding = 1,
544544
.has_hevc_encoding = 0,
545545
.has_hevc10_decoding = 1,
546546
.has_hevc10_encoding = 0,
547547
.has_vp9_decoding = 1,
548548
.has_vpp_p010 = 1,
549-
.has_vp9_encoding = 0,
549+
.has_vp9_encoding = 1,
550+
.has_lp_h264_encoding = 1,
551+
552+
.lp_h264_brc_mode = VA_RC_CQP,
550553

551554
.num_filters = 5,
552555
.filters = {

0 commit comments

Comments
 (0)