2 * Copyright © 2017 Intel Corporation
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sub license, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
12 * The above copyright notice and this permission notice (including the
13 * next paragraph) shall be included in all copies or substantial portions
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 * Zhao, Yakui <yakui.zhao@intel.com>
26 * Chen, Peng <peng.c.chen@intel.com>
30 #ifndef GEN10_HEVC_ENCODER_H
31 #define GEN10_HEVC_ENCODER_H
35 #include <intel_bufmgr.h>
38 #include "i965_gpe_utils.h"
40 #define GEN10_HEVC_REGION_START_Y_OFFSET 32
42 #define GEN10_HEVC_LOG2_MAX_HEVC_LCU 6
43 #define GEN10_HEVC_LOG2_MIN_HEVC_LCU 4
45 #define GEN10_MAX_REF_SURFACES 8
47 #define GEN10_HEVC_NUM_MAX_REF_L0 3
48 #define GEN10_HEVC_NUM_MAX_REF_L1 1
50 #define GEN10_HEVC_VME_REF_WIN 64
52 #define GEN10_HEVC_MAX_LCU_SIZE 64
54 #define BYTES2UINT32(a) (a / sizeof(uint32_t))
56 enum GEN10_HEVC_MEDIA_STATE_TYPE {
57 GEN10_HEVC_MEDIA_STATE_BRC_INIT_RESET = 0,
58 GEN10_HEVC_MEDIA_STATE_BRC_UPDATE = 1,
59 GEN10_HEVC_MEDIA_STATE_BRC_LCU_UPDATE = 2,
60 GEN10_HEVC_MEDIA_STATE_MBENC_INTRA = 3,
61 GEN10_HEVC_MEDIA_STATE_MBENC_LCU32 = 4,
62 GEN10_HEVC_MEDIA_STATE_MBENC_LCU64 = 5,
63 GEN10_HEVC_MEDIA_STATE_4XME = 6,
64 GEN10_HEVC_MEDIA_STATE_16XME = 7,
65 GEN10_HEVC_MEDIA_STATE_NO_SCALING = 8,
66 GEN10_HEVC_MEDIA_STATE_2X_SCALING = 9,
67 GEN10_HEVC_MEDIA_STATE_4X_SCALING = 10,
68 GEN10_HEVC_MEDIA_STATE_2X_4X_SCALING = 11,
69 GEN10_HEVC_MEDIA_STATE_16X_SCALING = 12
72 struct gen10_hevc_enc_kernel_walker_parameter {
73 unsigned int use_scoreboard;
74 unsigned int no_dependency;
75 unsigned int use_vertical_scan;
76 unsigned int use_custom_walker;
77 unsigned int walker_degree;
78 unsigned int resolution_x;
79 unsigned int resolution_y;
82 struct gen10_hevc_enc_kernel_parameter {
84 uint32_t inline_data_size;
85 uint32_t sampler_size;
88 struct gen10_hevc_enc_scoreboard_parameter {
92 uint32_t no_dependency;
95 struct gen10_hevc_scaling_conversion_param {
96 struct object_surface *input_surface;
97 struct object_surface *converted_output_surface;
98 struct object_surface *scaled_2x_surface;
99 struct object_surface *scaled_4x_surface;
100 uint32_t input_width;
101 uint32_t input_height;
102 uint32_t output_2x_width;
103 uint32_t output_2x_height;
104 uint32_t output_4x_width;
105 uint32_t output_4x_height;
107 uint32_t ds_type : 4;
108 uint32_t reserved0 : 12;
109 uint32_t conv_enable : 1;
110 uint32_t dump_enable : 1;
111 uint32_t is_64lcu : 1;
112 uint32_t reserved1 : 13;
116 #define GEN10_NONE_DS 0
117 #define GEN10_2X_DS 1
118 #define GEN10_4X_DS 2
119 #define GEN10_16X_DS 3
120 #define GEN10_2X_4X_DS 4
121 #define GEN10_DS_MASK 0x000F
123 #define GEN10_DEPTH_CONV_ENABLE 1
124 #define GEN10_DEPTH_CONV_DISABLE 0
126 enum GEN10_HEVC_SCALING_BTI {
127 GEN10_HEVC_SCALING_10BIT_Y = 0,
128 GEN10_HEVC_SCALING_10BIT_UV,
129 GEN10_HEVC_SCALING_8BIT_Y,
130 GEN10_HEVC_SCALING_8BIT_UV,
131 GEN10_HEVC_SCALING_4xDS,
132 GEN10_HEVC_SCALING_MB_STATS,
133 GEN10_HEVC_SCALING_2xDS,
134 GEN10_HEVC_SCALING_MB_SPLIT_SURFACE,
135 GEN10_HEVC_SCALING_LCU32_JOB_QUEUE_SCRATCH_SURFACE,
136 GEN10_HEVC_SCALING_LCU64_JOB_QUEUE_SCRATCH_SURFACE,
137 GEN10_HEVC_SCALING_LCU64_64x64_DISTORTION_SURFACE
140 enum GEN10_HEVC_HME_BTI {
141 GEN10_HEVC_HME_OUTPUT_MV_DATA = 0,
142 GEN10_HEVC_HME_16xINPUT_MV_DATA,
143 GEN10_HEVC_HME_4xOUTPUT_DISTORTION,
144 GEN10_HEVC_HME_VME_PRED_CURR_PIC_IDX0,
145 GEN10_HEVC_HME_VME_PRED_FWD_PIC_IDX0,
146 GEN10_HEVC_HME_VME_PRED_BWD_PIC_IDX0,
147 GEN10_HEVC_HME_VME_PRED_FWD_PIC_IDX1,
148 GEN10_HEVC_HME_VME_PRED_BWD_PIC_IDX1,
149 GEN10_HEVC_HME_VME_PRED_FWD_PIC_IDX2,
150 GEN10_HEVC_HME_VME_PRED_BWD_PIC_IDX2,
151 GEN10_HEVC_HME_VME_PRED_FWD_PIC_IDX3,
152 GEN10_HEVC_HME_VME_PRED_BWD_PIC_IDX3,
153 GEN10_HEVC_HME_4xDS_INPUT,
154 GEN10_HEVC_HME_BRC_DISTORTION,
155 GEN10_HEVC_HME_MV_AND_DISTORTION_SUM
158 enum GEN10_HEVC_MBENC_INTRA_BTI {
159 GEN10_HEVC_MBENC_INTRA_VME_PRED_CURR_PIC_IDX0 = 0,
160 GEN10_HEVC_MBENC_INTRA_VME_PRED_FWD_PIC_IDX0,
161 GEN10_HEVC_MBENC_INTRA_VME_PRED_BWD_PIC_IDX0,
162 GEN10_HEVC_MBENC_INTRA_VME_PRED_FWD_PIC_IDX1,
163 GEN10_HEVC_MBENC_INTRA_VME_PRED_BWD_PIC_IDX1,
164 GEN10_HEVC_MBENC_INTRA_VME_PRED_FWD_PIC_IDX2,
165 GEN10_HEVC_MBENC_INTRA_VME_PRED_BWD_PIC_IDX2,
166 GEN10_HEVC_MBENC_INTRA_VME_PRED_FWD_PIC_IDX3,
167 GEN10_HEVC_MBENC_INTRA_VME_PRED_BWD_PIC_IDX3,
168 GEN10_HEVC_MBENC_INTRA_CURR_Y,
169 GEN10_HEVC_MBENC_INTRA_CURR_UV,
170 GEN10_HEVC_MBENC_INTRA_INTERMEDIATE_CU_RECORD,
171 GEN10_HEVC_MBENC_INTRA_PAK_OBJ0,
172 GEN10_HEVC_MBENC_INTRA_PAK_CU_RECORD,
173 GEN10_HEVC_MBENC_INTRA_SCRATCH_SURFACE,
174 GEN10_HEVC_MBENC_INTRA_CU_QP_DATA,
175 GEN10_HEVC_MBENC_INTRA_CONST_DATA_LUT,
176 GEN10_HEVC_MBENC_INTRA_LCU_LEVEL_DATA_INPUT,
177 GEN10_HEVC_MBENC_INTRA_CONCURRENT_TG_DATA,
178 GEN10_HEVC_MBENC_INTRA_BRC_COMBINED_ENC_PARAMETER_SURFACE,
179 GEN10_HEVC_MBENC_INTRA_CU_SPLIT_SURFACE,
180 GEN10_HEVC_MBENC_INTRA_DEBUG_DUMP
183 enum GEN10_HEVC_MBENC_INTER_LCU32_BTI {
184 GEN10_HEVC_MBENC_INTER_LCU32_CURR_Y = 0,
185 GEN10_HEVC_MBENC_INTER_LCU32_CURR_UV,
186 GEN10_HEVC_MBENC_INTER_LCU32_ENC_CU_RECORD,
187 GEN10_HEVC_MBENC_INTER_LCU32_PAK_OBJ0,
188 GEN10_HEVC_MBENC_INTER_LCU32_PAK_CU_RECORD,
189 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_CURR_PIC_IDX0,
190 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_FWD_PIC_IDX0,
191 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_BWD_PIC_IDX0,
192 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_FWD_PIC_IDX1,
193 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_BWD_PIC_IDX1,
194 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_FWD_PIC_IDX2,
195 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_BWD_PIC_IDX2,
196 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_FWD_PIC_IDX3,
197 GEN10_HEVC_MBENC_INTER_LCU32_VME_PRED_BWD_PIC_IDX3,
198 GEN10_HEVC_MBENC_INTER_LCU32_CU16x16_QP_DATA,
199 GEN10_HEVC_MBENC_INTER_LCU32_ENC_CONST_TABLE,
200 GEN10_HEVC_MBENC_INTER_LCU32_COLOCATED_CU_MV_DATA,
201 GEN10_HEVC_MBENC_INTER_LCU32_HME_MOTION_PREDICTOR_DATA,
202 GEN10_HEVC_MBENC_INTER_LCU32_LCU_LEVEL_DATA_INPUT,
203 GEN10_HEVC_MBENC_INTER_LCU32_LCU_ENC_SCRATCH_SURFACE,
204 GEN10_HEVC_MBENC_INTER_LCU32_CONCURRENT_TG_DATA,
205 GEN10_HEVC_MBENC_INTER_LCU32_BRC_COMBINED_ENC_PARAMETER_SURFACE,
206 GEN10_HEVC_MBENC_INTER_LCU32_JOB_QUEUE_SCRATCH_SURFACE,
207 GEN10_HEVC_MBENC_INTER_LCU32_CU_SPLIT_DATA_SURFACE,
208 GEN10_HEVC_MBENC_INTER_LCU32_RESIDUAL_DATA_SCRATCH_SURFACE,
209 GEN10_HEVC_MBENC_INTER_LCU32_DEBUG_SURFACE
212 enum GEN10_HEVC_MBENC_INTER_LCU64_BTI {
213 GEN10_HEVC_MBENC_INTER_LCU64_CURR_Y = 0,
214 GEN10_HEVC_MBENC_INTER_LCU64_CURR_UV,
215 GEN10_HEVC_MBENC_INTER_LCU64_CU32_ENC_CU_RECORD,
216 GEN10_HEVC_MBENC_INTER_LCU64_SECOND_CU32_ENC_CU_RECORD,
217 GEN10_HEVC_MBENC_INTER_LCU64_PAK_OBJ0,
218 GEN10_HEVC_MBENC_INTER_LCU64_PAK_CU_RECORD,
219 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_CURR_PIC_IDX0,
220 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_FWD_PIC_IDX0,
221 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_BWD_PIC_IDX0,
222 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_FWD_PIC_IDX1,
223 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_BWD_PIC_IDX1,
224 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_FWD_PIC_IDX2,
225 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_BWD_PIC_IDX2,
226 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_FWD_PIC_IDX3,
227 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_BWD_PIC_IDX3,
228 GEN10_HEVC_MBENC_INTER_LCU64_CU16x16_QP_DATA,
229 GEN10_HEVC_MBENC_INTER_LCU64_CU32_ENC_CONST_TABLE,
230 GEN10_HEVC_MBENC_INTER_LCU64_COLOCATED_CU_MV_DATA,
231 GEN10_HEVC_MBENC_INTER_LCU64_HME_MOTION_PREDICTOR_DATA,
232 GEN10_HEVC_MBENC_INTER_LCU64_LCU_LEVEL_DATA_INPUT,
233 GEN10_HEVC_MBENC_INTER_LCU64_CU32_LCU_ENC_SCRATCH_SURFACE,
234 GEN10_HEVC_MBENC_INTER_LCU64_64X64_DISTORTION_SURFACE,
235 GEN10_HEVC_MBENC_INTER_LCU64_CONCURRENT_TG_DATA,
236 GEN10_HEVC_MBENC_INTER_LCU64_BRC_COMBINED_ENC_PARAMETER_SURFACE,
237 GEN10_HEVC_MBENC_INTER_LCU64_CU32_JOB_QUEUE_1D_SURFACE,
238 GEN10_HEVC_MBENC_INTER_LCU64_CU32_JOB_QUEUE_2D_SURFACE,
239 GEN10_HEVC_MBENC_INTER_LCU64_CU32_RESIDUAL_DATA_SCRATCH_SURFACE,
240 GEN10_HEVC_MBENC_INTER_LCU64_CU_SPLIT_DATA_SURFACE,
241 GEN10_HEVC_MBENC_INTER_LCU64_CURR_Y_2xDS,
242 GEN10_HEVC_MBENC_INTER_LCU64_INTERMEDIATE_CU_RECORD,
243 GEN10_HEVC_MBENC_INTER_LCU64_CONST64_DATA_LUT,
244 GEN10_HEVC_MBENC_INTER_LCU64_LCU_STORAGE_SURFACE,
245 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_CURR_PIC_2xDS_IDX0,
246 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_FWD_PIC_2xDS_IDX0,
247 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_BWD_PIC_2xDS_IDX0,
248 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_FWD_PIC_2xDS_IDX1,
249 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_BWD_PIC_2xDS_IDX1,
250 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_FWD_PIC_2xDS_IDX2,
251 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_BWD_PIC_2xDS_IDX2,
252 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_FWD_PIC_2xDS_IDX3,
253 GEN10_HEVC_MBENC_INTER_LCU64_VME_PRED_BWD_PIC_2xDS_IDX3,
254 GEN10_HEVC_MBENC_INTER_LCU64_JOB_QUEUE_1D_SURFACE,
255 GEN10_HEVC_MBENC_INTER_LCU64_JOB_QUEUE_2D_SURFACE,
256 GEN10_HEVC_MBENC_INTER_LCU64_RESIDUAL_DATA_SCRATCH_SURFACE,
257 GEN10_HEVC_MBENC_INTER_LCU64_DEBUG_SURFACE
260 struct gen10_scaling_context {
261 struct i965_gpe_context gpe_context;
264 #define GEN10_HEVC_ME_DIST_TYPE_INTER_BRC 2
265 #define GEN10_HEVC_ME_DIST_TYPE_INTRA 0
266 #define GEN10_HEVC_ME_DIST_TYPE_INTRA_BRC 1
268 #define GEN10_HEVC_HME_LEVEL_4X 1
269 #define GEN10_HEVC_HME_LEVEL_16X 2
271 struct gen10_me_context {
272 struct i965_gpe_context gpe_context;
275 #define GEN10_HEVC_MBENC_INTRA 0
276 #define GEN10_HEVC_MBENC_INTER_LCU32 1
277 #define GEN10_HEVC_MBENC_INTER_LCU64 2
279 #define GEN10_HEVC_MBENC_I_KRNIDX_G10 0
280 #define GEN10_HEVC_MBENC_INTER_LCU32_KRNIDX_G10 1
281 #define GEN10_HEVC_MBENC_INTER_LCU64_KRNIDX_G10 2
282 #define GEN10_HEVC_MBENC_NUM 3
284 #define GEN10_HEVC_MBENC_INTRA 0
285 #define GEN10_HEVC_MBENC_INTER_LCU32 1
286 #define GEN10_HEVC_MBENC_INTER_LCU64 2
288 struct gen10_mbenc_context {
289 struct i965_gpe_context gpe_contexts[GEN10_HEVC_MBENC_NUM];
292 #define GEN10_HEVC_BRC_HISTORY_BUFFER_SIZE 832
293 #define GEN10_HEVC_BRC_IMG_STATE_SIZE_PER_PASS 128
295 #define GEN10_HEVC_BRC_CONST_SURFACE_WIDTH 64
296 #define GEN10_HEVC_BRC_CONST_SURFACE_HEIGHT 35
298 #define GEN10_HEVC_BRC_INIT 0
299 #define GEN10_HEVC_BRC_RESET 1
300 #define GEN10_HEVC_BRC_FRAME_UPDATE 2
301 #define GEN10_HEVC_BRC_LCU_UPDATE 3
302 #define GEN10_HEVC_BRC_NUM 4
304 struct gen10_brc_context {
305 struct i965_gpe_context gpe_contexts[GEN10_HEVC_BRC_NUM];
308 struct gen10_hevc_surface_priv {
309 VADriverContextP ctx;
311 VASurfaceID scaled_4x_surface_id;
312 struct object_surface *scaled_4x_surface;
313 struct i965_gpe_resource gpe_scaled_4x_surface;
315 VASurfaceID scaled_16x_surface_id;
316 struct object_surface *scaled_16x_surface;
317 struct i965_gpe_resource gpe_scaled_16x_surface;
319 VASurfaceID scaled_2x_surface_id;
320 struct object_surface *scaled_2x_surface;
321 struct i965_gpe_resource gpe_scaled_2x_surface;
323 VASurfaceID converted_surface_id;
324 struct object_surface *converted_surface;
325 struct i965_gpe_resource gpe_converted_surface;
327 struct i965_gpe_resource motion_vector_temporal;
335 uint32_t is_10bit : 1;
336 uint32_t is_64lcu : 1;
337 uint32_t hme_enabled : 1;
338 uint32_t conv_scaling_done : 1;
339 uint32_t reserved : 28;
342 struct gen10_hevc_gpe_scoreboard {
379 struct gen10_hevc_enc_state {
380 uint32_t frame_width;
381 uint32_t frame_height;
382 uint32_t frame_width_2x;
383 uint32_t frame_height_2x;
384 uint32_t frame_width_4x;
385 uint32_t frame_height_4x;
386 uint32_t frame_width_16x;
387 uint32_t frame_height_16x;
389 uint32_t use_hw_scoreboard : 1;
390 uint32_t use_hw_non_stalling_scoreboard : 1;
391 uint32_t hme_supported : 1;
392 uint32_t b16xme_supported : 1;
393 uint32_t hme_enabled : 1;
394 uint32_t b16xme_enabled : 1;
395 uint32_t is_10bit : 1;
396 uint32_t is_64lcu : 1;
397 uint32_t is_same_ref_list : 1;
398 uint32_t is_col_mvp_enabled : 1;
399 uint32_t sao_2nd_needed : 1;
400 uint32_t sao_first_pass_flag : 1;
401 uint32_t lambda_init : 1;
402 uint32_t rdoq_enabled : 1;
403 uint32_t low_delay : 1;
404 uint32_t reserved : 17;
406 uint32_t curr_pak_stat_index;
407 uint32_t frame_number;
408 uint32_t cu_records_offset;
410 int thread_num_per_ctb;
411 int num_regions_in_slice;
417 uint32_t profile_level_max_frame;
422 uint32_t num_regions;
423 uint32_t max_height_in_region;
424 uint32_t num_unit_in_wf;
428 uint32_t target_usage;
430 double brc_init_current_target_buf_full_in_bits;
431 double brc_init_reset_input_bits_per_frame;
432 double brc_init_reset_buf_size_in_bits;
434 uint32_t init_vbv_buffer_fullness_in_bit;
435 uint32_t vbv_buffer_size_in_bit;
438 uint32_t target_percentage;
439 uint32_t target_bit_rate;
440 uint32_t max_bit_rate;
441 uint32_t min_bit_rate;
450 uint32_t lcu_brc_enabled : 1;
451 uint32_t brc_inited : 1;
452 uint32_t brc_reset : 1;
453 uint32_t brc_enabled : 1;
454 uint32_t brc_method : 8;
455 uint32_t reserved : 20;
459 struct gen10_hevc_enc_context {
460 void *enc_priv_state;
462 struct gen10_scaling_context scaling_context;
463 struct gen10_me_context me_context;
464 struct gen10_mbenc_context mbenc_context;
465 struct gen10_brc_context brc_context;
467 struct i965_gpe_resource res_mb_code_surface;
469 struct i965_gpe_resource res_16x16_qp_data_surface;
470 struct i965_gpe_resource res_lculevel_input_data_buffer;
471 struct i965_gpe_resource res_concurrent_tg_data;
472 struct i965_gpe_resource res_cu_split_surface;
473 struct i965_gpe_resource res_kernel_trace_data;
474 struct i965_gpe_resource res_temp_curecord_lcu32_surface;
475 struct i965_gpe_resource res_temp2_curecord_lcu32_surface;
476 struct i965_gpe_resource res_temp_curecord_surface_lcu64;
477 struct i965_gpe_resource res_enc_scratch_buffer;
478 struct i965_gpe_resource res_enc_scratch_lcu64_buffer;
479 struct i965_gpe_resource res_enc_const_table_inter;
480 struct i965_gpe_resource res_enc_const_table_inter_lcu64;
481 struct i965_gpe_resource res_enc_const_table_intra;
482 struct i965_gpe_resource res_scratch_surface;
483 struct i965_gpe_resource res_jbq_header_buffer;
484 struct i965_gpe_resource res_jbq_header_lcu64_buffer;
485 struct i965_gpe_resource res_jbq_data_lcu32_surface;
486 struct i965_gpe_resource res_jbq_data_lcu64_surface;
487 struct i965_gpe_resource res_residual_scratch_lcu32_surface;
488 struct i965_gpe_resource res_residual_scratch_lcu64_surface;
489 struct i965_gpe_resource res_64x64_dist_buffer;
490 struct i965_gpe_resource res_mb_stat_surface;
491 struct i965_gpe_resource res_mb_split_surface;
493 struct i965_gpe_resource res_s4x_memv_data_surface;
494 struct i965_gpe_resource res_s4x_me_dist_surface;
495 struct i965_gpe_resource res_s16x_memv_data_surface;
496 struct i965_gpe_resource res_mv_dist_sum_buffer;
498 struct i965_gpe_resource res_brc_history_buffer;
499 struct i965_gpe_resource res_brc_intra_dist_surface;
500 struct i965_gpe_resource res_brc_pak_statistics_buffer[2];
501 struct i965_gpe_resource res_brc_pic_image_state_write_buffer;
502 struct i965_gpe_resource res_brc_pic_image_state_read_buffer;
503 struct i965_gpe_resource res_brc_const_data_surface;
504 struct i965_gpe_resource res_brc_lcu_const_data_buffer;
505 struct i965_gpe_resource res_brc_mb_qp_surface;
506 struct i965_gpe_resource res_brc_input_enc_kernel_buffer;
507 struct i965_gpe_resource res_brc_me_dist_surface;
509 struct gen10_hevc_enc_lambda_param lambda_param;
510 struct gen10_hevc_enc_frame_info frame_info;
511 struct gen10_hevc_enc_common_res common_res;
512 struct gen10_hevc_enc_status_buffer status_buffer;