-----Original Message----- From: Zhao, Yakui Sent: Monday, January 23, 2017 10:11 AM To: Qu, Pengfei <pengfei...@intel.com> Cc: libva@lists.freedesktop.org Subject: Re: [Libva] [PATCH v2 1/9] ENC: move gpe related function into src/i965_gpe_utils.h/c
On 01/22/2017 03:36 PM, Pengfei Qu wrote: > v1: > add align version for obj surface conversion to gpe surface remove > comments and enum value > > Signed-off-by: Pengfei Qu<pengfei...@intel.com> > Reviewed-by: Sean V Kelley<sea...@posteo.de> > --- > src/gen9_vp9_encoder.c | 154 ++--------------------------- > src/gen9_vp9_encoder.h | 10 -- > src/i965_defines.h | 3 + > src/i965_gpe_utils.c | 256 > +++++++++++++++++++++++++++++++++++++++++++++++++ > src/i965_gpe_utils.h | 75 +++++++++++++++ > 5 files changed, 340 insertions(+), 158 deletions(-) > mode change 100755 => 100644 src/i965_defines.h > > diff --git a/src/gen9_vp9_encoder.c b/src/gen9_vp9_encoder.c index > 05d86da..32ed729 100644 > --- a/src/gen9_vp9_encoder.c > +++ b/src/gen9_vp9_encoder.c > @@ -58,7 +58,6 @@ > #define BRC_KERNEL_AVBR 0x0040 > #define BRC_KERNEL_CQL 0x0080 > > -#define DEFAULT_MOCS 0x02 > #define VP9_PIC_STATE_BUFFER_SIZE 192 > > typedef struct _intel_kernel_header_ @@ -842,7 +841,7 @@ > gen9_vp9_free_resources(struct gen9_encoder_context_vp9 *vme_context) > > static void > gen9_init_media_object_walker_parameter(struct intel_encoder_context > *encoder_context, > - struct > vp9_encoder_kernel_walker_parameter *kernel_walker_param, > + struct > + gpe_encoder_kernel_walker_parameter *kernel_walker_param, > struct > gpe_media_object_walker_parameter *walker_param) > { > memset(walker_param, 0, sizeof(*walker_param)); @@ -924,147 > +923,6 @@ gen9_init_media_object_walker_parameter(struct > intel_encoder_context *encoder_co > } > > static void > -gen9_add_2d_gpe_surface(VADriverContextP ctx, > - struct i965_gpe_context *gpe_context, > - struct object_surface *obj_surface, > - int is_uv_surface, > - int is_media_block_rw, > - unsigned int format, > - int index) > -{ > - struct i965_gpe_resource gpe_resource; > - struct i965_gpe_surface gpe_surface; > - > - memset(&gpe_surface, 0, sizeof(gpe_surface)); > - > - i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface); > - gpe_surface.gpe_resource =&gpe_resource; > - gpe_surface.is_2d_surface = 1; > - gpe_surface.is_uv_surface = !!is_uv_surface; > - gpe_surface.is_media_block_rw = !!is_media_block_rw; > - > - gpe_surface.cacheability_control = DEFAULT_MOCS; > - gpe_surface.format = format; > - > - gen9_gpe_context_add_surface(gpe_context,&gpe_surface, index); > - i965_free_gpe_resource(&gpe_resource); > -} > - > -static void > -gen9_add_adv_gpe_surface(VADriverContextP ctx, > - struct i965_gpe_context *gpe_context, > - struct object_surface *obj_surface, > - int index) > -{ > - struct i965_gpe_resource gpe_resource; > - struct i965_gpe_surface gpe_surface; > - > - memset(&gpe_surface, 0, sizeof(gpe_surface)); > - > - i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface); > - gpe_surface.gpe_resource =&gpe_resource; > - gpe_surface.is_adv_surface = 1; > - gpe_surface.cacheability_control = DEFAULT_MOCS; > - gpe_surface.v_direction = 2; > - > - gen9_gpe_context_add_surface(gpe_context,&gpe_surface, index); > - i965_free_gpe_resource(&gpe_resource); > -} > - > -static void > -gen9_add_buffer_gpe_surface(VADriverContextP ctx, > - struct i965_gpe_context *gpe_context, > - struct i965_gpe_resource *gpe_buffer, > - int is_raw_buffer, > - unsigned int size, > - unsigned int offset, > - int index) > -{ > - struct i965_gpe_surface gpe_surface; > - > - memset(&gpe_surface, 0, sizeof(gpe_surface)); > - > - gpe_surface.gpe_resource = gpe_buffer; > - gpe_surface.is_buffer = 1; > - gpe_surface.is_raw_buffer = !!is_raw_buffer; > - gpe_surface.cacheability_control = DEFAULT_MOCS; > - gpe_surface.size = size; > - gpe_surface.offset = offset; > - > - gen9_gpe_context_add_surface(gpe_context,&gpe_surface, index); > -} > - > -static void > -gen9_add_buffer_2d_gpe_surface(VADriverContextP ctx, > - struct i965_gpe_context *gpe_context, > - struct i965_gpe_resource *gpe_buffer, > - int is_media_block_rw, > - unsigned int format, > - int index) > -{ > - struct i965_gpe_surface gpe_surface; > - > - memset(&gpe_surface, 0, sizeof(gpe_surface)); > - > - gpe_surface.gpe_resource = gpe_buffer; > - gpe_surface.is_2d_surface = 1; > - gpe_surface.is_media_block_rw = !!is_media_block_rw; > - gpe_surface.cacheability_control = DEFAULT_MOCS; > - gpe_surface.format = format; > - > - gen9_gpe_context_add_surface(gpe_context,&gpe_surface, index); > -} > - > -static void > -gen9_add_dri_buffer_gpe_surface(VADriverContextP ctx, > - struct i965_gpe_context *gpe_context, > - dri_bo *bo, > - int is_raw_buffer, > - unsigned int size, > - unsigned int offset, > - int index) > -{ > - struct i965_gpe_resource gpe_resource; > - > - i965_dri_object_to_buffer_gpe_resource(&gpe_resource, bo); > - gen9_add_buffer_gpe_surface(ctx, > - gpe_context, > -&gpe_resource, > - is_raw_buffer, > - size, > - offset, > - index); > - > - i965_free_gpe_resource(&gpe_resource); > -} > - > -/* > -static void > -gen9_add_dri_buffer_2d_gpe_surface(VADriverContextP ctx, > - struct i965_gpe_context *gpe_context, > - dri_bo *bo, > - unsigned int width, > - unsigned int height, > - unsigned int pitch, > - int is_media_block_rw, > - unsigned int format, > - int index) > -{ > - struct i965_gpe_resource gpe_resource; > - > - i965_dri_object_to_2d_gpe_resource(&gpe_resource, bo, width, height, > pitch); > - gen9_add_buffer_2d_gpe_surface(ctx, > - gpe_context, > -&gpe_resource, > - is_media_block_rw, > - format, > - index); > - > - i965_free_gpe_resource(&gpe_resource); > -} > -*/ > - > -static void > gen9_run_kernel_media_object(VADriverContextP ctx, > struct intel_encoder_context *encoder_context, > struct i965_gpe_context *gpe_context, > @@ -1491,7 +1349,7 @@ gen9_vp9_brc_intra_dist_kernel(VADriverContextP ctx, > VAEncPictureParameterBufferVP9 *pic_param; > struct gen9_vp9_state *vp9_state; > struct gpe_media_object_walker_parameter media_object_walker_param; > - struct vp9_encoder_kernel_walker_parameter kernel_walker_param; > + struct gpe_encoder_kernel_walker_parameter kernel_walker_param; > > vp9_state = (struct gen9_vp9_state *) > encoder_context->enc_priv_state; > > @@ -2331,7 +2189,7 @@ gen9_vp9_me_kernel(VADriverContextP ctx, > struct gen9_vp9_me_curbe_param me_curbe_param; > struct gen9_vp9_state *vp9_state; > struct gpe_media_object_walker_parameter media_object_walker_param; > - struct vp9_encoder_kernel_walker_parameter kernel_walker_param; > + struct gpe_encoder_kernel_walker_parameter kernel_walker_param; > > vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; > if (!vp9_state || !vp9_state->pic_param) @@ -2471,7 +2329,7 @@ > gen9_vp9_scaling_kernel(VADriverContextP ctx, > struct gen9_vp9_state *vp9_state; > VAEncPictureParameterBufferVP9 *pic_param; > struct gpe_media_object_walker_parameter media_object_walker_param; > - struct vp9_encoder_kernel_walker_parameter kernel_walker_param; > + struct gpe_encoder_kernel_walker_parameter kernel_walker_param; > struct object_surface *obj_surface; > struct object_surface *input_surface, *output_surface; > struct gen9_surface_vp9 *vp9_priv_surface; @@ -2738,7 +2596,7 @@ > gen9_vp9_dys_kernel(VADriverContextP ctx, > struct gen9_vp9_dys_curbe_param curbe_param; > struct gen9_vp9_dys_surface_param surface_param; > struct gpe_media_object_walker_parameter > media_object_walker_param; > - struct vp9_encoder_kernel_walker_parameter kernel_walker_param; > + struct gpe_encoder_kernel_walker_parameter kernel_walker_param; > unsigned int resolution_x, > resolution_y; > > media_function = VP9_MEDIA_STATE_DYS; @@ -3526,7 +3384,7 @@ > gen9_vp9_mbenc_kernel(VADriverContextP ctx, > struct gen9_encoder_context_vp9 *vme_context = > encoder_context->vme_context; > struct i965_gpe_context *gpe_context, *tx_gpe_context; > struct gpe_media_object_walker_parameter > media_object_walker_param; > - struct vp9_encoder_kernel_walker_parameter kernel_walker_param; > + struct gpe_encoder_kernel_walker_parameter kernel_walker_param; > unsigned int resolution_x, resolution_y; > struct gen9_vp9_state *vp9_state; > VAEncPictureParameterBufferVP9 *pic_param; diff --git > a/src/gen9_vp9_encoder.h b/src/gen9_vp9_encoder.h index > 972e2ad..c61a796 100644 > --- a/src/gen9_vp9_encoder.h > +++ b/src/gen9_vp9_encoder.h > @@ -83,16 +83,6 @@ struct vp9_encoder_kernel_parameter > unsigned int sampler_size; > }; > > -struct vp9_encoder_kernel_walker_parameter > -{ > - unsigned int walker_degree; > - unsigned int use_scoreboard; > - unsigned int scoreboard_mask; > - unsigned int no_dependency; > - unsigned int resolution_x; > - unsigned int resolution_y; > -}; > - > struct vp9_encoder_scoreboard_parameter > { > unsigned int mask; > diff --git a/src/i965_defines.h b/src/i965_defines.h old mode 100755 > new mode 100644 index 941ad4e..a5ca7bf > --- a/src/i965_defines.h > +++ b/src/i965_defines.h > @@ -977,7 +977,10 @@ > #define VDENC_SURFACE_NV21 11 > > #define MFC_BITSTREAM_BYTECOUNT_FRAME_REG 0x128A0 > +#define MFC_BITSTREAM_BYTECOUNT_SLICE_REG 0x128D0 > +#define MFC_IMAGE_STATUS_MASK_REG 0x128B4 > #define MFC_IMAGE_STATUS_CTRL_REG 0x128B8 > +#define MFC_QP_STATUS_COUNT_REG 0x128bc > > #define GEN9_CACHE_PTE 0x02 > > diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c index > 548cbf4..9633d4b 100644 > --- a/src/i965_gpe_utils.c > +++ b/src/i965_gpe_utils.c > @@ -35,6 +35,8 @@ > #include "i965_drv_video.h" > #include "i965_gpe_utils.h" > > +#define DEFAULT_MOCS 2 Currently one field of i965->intel.mocs_state is added. Can we use it instead of DEFAULT_MOCS? [Pengfei] it will be replaced with i965->intel.mocs_state > + > static void > i965_gpe_select(VADriverContextP ctx, > struct i965_gpe_context *gpe_context, @@ -1404,6 > +1406,27 @@ i965_object_surface_to_2d_gpe_resource(struct i965_gpe_resource > *res, > } > > void > +i965_object_surface_to_2d_gpe_resource_with_align(struct i965_gpe_resource > *res, > + struct > +object_surface *obj_surface) { > + unsigned int swizzle; > + > + res->type = I965_GPE_RESOURCE_2D; > + res->width = ALIGN(obj_surface->orig_width,16); > + res->height = ALIGN(obj_surface->orig_height,16); > + res->pitch = obj_surface->width; > + res->size = obj_surface->size; > + res->cb_cr_pitch = obj_surface->cb_cr_pitch; > + res->x_cb_offset = obj_surface->x_cb_offset; > + res->y_cb_offset = obj_surface->y_cb_offset; > + res->bo = obj_surface->bo; > + res->map = NULL; > + > + dri_bo_reference(res->bo); > + dri_bo_get_tiling(obj_surface->bo,&res->tiling,&swizzle); > +} > + > +void > i965_dri_object_to_buffer_gpe_resource(struct i965_gpe_resource *res, > dri_bo *bo) > { > @@ -2523,6 +2546,239 @@ gen8_gpe_pipe_control(VADriverContextP ctx, > __OUT_BATCH(batch, param->dw1); > } > > +void > +i965_init_media_object_walker_parameter(struct > gpe_encoder_kernel_walker_parameter *kernel_walker_param, > + struct > +gpe_media_object_walker_parameter *walker_param) { > + memset(walker_param, 0, sizeof(*walker_param)); > + > + walker_param->use_scoreboard = > + kernel_walker_param->use_scoreboard; > + > + walker_param->block_resolution.x = kernel_walker_param->resolution_x; > + walker_param->block_resolution.y = > + kernel_walker_param->resolution_y; > + > + walker_param->global_resolution.x = kernel_walker_param->resolution_x; > + walker_param->global_resolution.y = > + kernel_walker_param->resolution_y; > + > + walker_param->global_outer_loop_stride.x = > kernel_walker_param->resolution_x; > + walker_param->global_outer_loop_stride.y = 0; > + > + walker_param->global_inner_loop_unit.x = 0; > + walker_param->global_inner_loop_unit.y = > + kernel_walker_param->resolution_y; > + > + walker_param->local_loop_exec_count = 0xFFFF; //MAX VALUE > + walker_param->global_loop_exec_count = 0xFFFF; //MAX VALUE > + > + if (kernel_walker_param->no_dependency) { > + walker_param->scoreboard_mask = 0; > + // Raster scan walking pattern > + walker_param->local_outer_loop_stride.x = 0; > + walker_param->local_outer_loop_stride.y = 1; > + walker_param->local_inner_loop_unit.x = 1; > + walker_param->local_inner_loop_unit.y = 0; > + walker_param->local_end.x = kernel_walker_param->resolution_x - 1; > + walker_param->local_end.y = 0; > + } else if (kernel_walker_param->use_vertical_raster_scan) { > + walker_param->scoreboard_mask = 0x1; > + walker_param->use_scoreboard = 0; > + // Raster scan walking pattern > + walker_param->local_outer_loop_stride.x = 1; > + walker_param->local_outer_loop_stride.y = 0; > + walker_param->local_inner_loop_unit.x = 0; > + walker_param->local_inner_loop_unit.y = 1; > + walker_param->local_end.x = 0; > + walker_param->local_end.y = kernel_walker_param->resolution_y - 1; > + } else { > + walker_param->local_end.x = 0; > + walker_param->local_end.y = 0; > + > + if (kernel_walker_param->walker_degree == WALKER_45Z_DEGREE) { > + // 45z degree vp9 > + walker_param->scoreboard_mask = 0x0F; > + > + walker_param->global_loop_exec_count = 0x3FF; > + walker_param->local_loop_exec_count = 0x3FF; > + > + walker_param->global_resolution.x = (unsigned > int)(kernel_walker_param->resolution_x / 2.f) + 1; > + walker_param->global_resolution.y = 2 * > + kernel_walker_param->resolution_y; > + > + walker_param->global_start.x = 0; > + walker_param->global_start.y = 0; > + > + walker_param->global_outer_loop_stride.x = > walker_param->global_resolution.x; > + walker_param->global_outer_loop_stride.y = 0; > + > + walker_param->global_inner_loop_unit.x = 0; > + walker_param->global_inner_loop_unit.y = > + walker_param->global_resolution.y; > + > + walker_param->block_resolution.x = > walker_param->global_resolution.x; > + walker_param->block_resolution.y = > + walker_param->global_resolution.y; > + > + walker_param->local_start.x = 0; > + walker_param->local_start.y = 0; > + > + walker_param->local_outer_loop_stride.x = 1; > + walker_param->local_outer_loop_stride.y = 0; > + > + walker_param->local_inner_loop_unit.x = -1; > + walker_param->local_inner_loop_unit.y = 4; > + > + walker_param->middle_loop_extra_steps = 3; > + walker_param->mid_loop_unit_x = 0; > + walker_param->mid_loop_unit_y = 1; > + } else if (kernel_walker_param->walker_degree == > + WALKER_45_DEGREE) { > + > + walker_param->scoreboard_mask = 0x03; > + // 45 order in local loop > + walker_param->local_outer_loop_stride.x = 1; > + walker_param->local_outer_loop_stride.y = 0; > + walker_param->local_inner_loop_unit.x = -1; > + walker_param->local_inner_loop_unit.y = 1; > + } else if (kernel_walker_param->walker_degree == WALKER_26Z_DEGREE) { > + // 26z HEVC > + walker_param->scoreboard_mask = 0x7f; > + > + // z order in local loop > + walker_param->local_outer_loop_stride.x = 0; > + walker_param->local_outer_loop_stride.y = 1; > + walker_param->local_inner_loop_unit.x = 1; > + walker_param->local_inner_loop_unit.y = 0; > + > + walker_param->block_resolution.x = 2; > + walker_param->block_resolution.y = 2; > + > + walker_param->global_outer_loop_stride.x = 2; > + walker_param->global_outer_loop_stride.y = 0; > + > + walker_param->global_inner_loop_unit.x = 0xFFF - 4 + 1; > + walker_param->global_inner_loop_unit.y = 2; > + > + } else { > + // 26 degree > + walker_param->scoreboard_mask = 0x0F; > + walker_param->local_outer_loop_stride.x = 1; > + walker_param->local_outer_loop_stride.y = 0; > + walker_param->local_inner_loop_unit.x = -2; > + walker_param->local_inner_loop_unit.y = 1; > + } > + } > +} > + > +void > +gen9_add_2d_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + struct object_surface *obj_surface, > + int is_uv_surface, > + int is_media_block_rw, > + unsigned int format, > + int index) > +{ > + struct i965_gpe_resource gpe_resource; > + struct i965_gpe_surface gpe_surface; > + > + memset(&gpe_surface, 0, sizeof(gpe_surface)); > + > + i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface); > + gpe_surface.gpe_resource =&gpe_resource; > + gpe_surface.is_2d_surface = 1; > + gpe_surface.is_uv_surface = !!is_uv_surface; > + gpe_surface.is_media_block_rw = !!is_media_block_rw; > + > + gpe_surface.cacheability_control = DEFAULT_MOCS; > + gpe_surface.format = format; > + > + gen9_gpe_context_add_surface(gpe_context,&gpe_surface, index); > + i965_free_gpe_resource(&gpe_resource); > +} > + > +void > +gen9_add_adv_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + struct object_surface *obj_surface, > + int index) > +{ > + struct i965_gpe_resource gpe_resource; > + struct i965_gpe_surface gpe_surface; > + > + memset(&gpe_surface, 0, sizeof(gpe_surface)); > + > + i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface); > + gpe_surface.gpe_resource =&gpe_resource; > + gpe_surface.is_adv_surface = 1; > + gpe_surface.cacheability_control = DEFAULT_MOCS; > + gpe_surface.v_direction = 2; > + > + gen9_gpe_context_add_surface(gpe_context,&gpe_surface, index); > + i965_free_gpe_resource(&gpe_resource); > +} > + > +void > +gen9_add_buffer_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + struct i965_gpe_resource *gpe_buffer, > + int is_raw_buffer, > + unsigned int size, > + unsigned int offset, > + int index) { > + struct i965_gpe_surface gpe_surface; > + > + memset(&gpe_surface, 0, sizeof(gpe_surface)); > + > + gpe_surface.gpe_resource = gpe_buffer; > + gpe_surface.is_buffer = 1; > + gpe_surface.is_raw_buffer = !!is_raw_buffer; > + gpe_surface.cacheability_control = DEFAULT_MOCS; > + gpe_surface.size = size; > + gpe_surface.offset = offset; > + > + gen9_gpe_context_add_surface(gpe_context,&gpe_surface, index); } > + > +void > +gen9_add_buffer_2d_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + struct i965_gpe_resource *gpe_buffer, > + int is_media_block_rw, > + unsigned int format, > + int index) { > + struct i965_gpe_surface gpe_surface; > + > + memset(&gpe_surface, 0, sizeof(gpe_surface)); > + > + gpe_surface.gpe_resource = gpe_buffer; > + gpe_surface.is_2d_surface = 1; > + gpe_surface.is_media_block_rw = !!is_media_block_rw; > + gpe_surface.cacheability_control = DEFAULT_MOCS; > + gpe_surface.format = format; > + > + gen9_gpe_context_add_surface(gpe_context,&gpe_surface, index); } > + > +void > +gen9_add_dri_buffer_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + dri_bo *bo, > + int is_raw_buffer, > + unsigned int size, > + unsigned int offset, > + int index) { > + struct i965_gpe_resource gpe_resource; > + > + i965_dri_object_to_buffer_gpe_resource(&gpe_resource, bo); > + gen9_add_buffer_gpe_surface(ctx, > + gpe_context, &gpe_resource, > + is_raw_buffer, > + size, > + offset, > + index); > + > + i965_free_gpe_resource(&gpe_resource); > +} > + > bool > i965_gpe_table_init(VADriverContextP ctx) > { > diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h index > 52097d3..abc7271 100644 > --- a/src/i965_gpe_utils.h > +++ b/src/i965_gpe_utils.h > @@ -358,6 +358,9 @@ Bool i965_allocate_gpe_resource(dri_bufmgr *bufmgr, > void i965_object_surface_to_2d_gpe_resource(struct i965_gpe_resource *res, > struct object_surface > *obj_surface); > > +void i965_object_surface_to_2d_gpe_resource_with_align(struct > i965_gpe_resource *res, > + struct > +object_surface *obj_surface); > + > void i965_dri_object_to_buffer_gpe_resource(struct i965_gpe_resource *res, > dri_bo *bo); > > @@ -412,6 +415,18 @@ void gen8_gpe_mi_batch_buffer_start(VADriverContextP ctx, > struct > gpe_mi_batch_buffer_start_parameter *params); > > > +struct gpe_media_object_inline_data > +{ > + union { > + struct { > + unsigned int x:8; > + unsigned int y:8; > + unsigned int reserved:16; > + }; > + unsigned int value; > + }; > +}; > + > struct gpe_media_object_parameter > { > unsigned int use_scoreboard; > @@ -507,6 +522,25 @@ struct gpe_media_object_walker_parameter > struct gpe_walker_xy global_inner_loop_unit; > }; > > +enum walker_degree > +{ > + WALKER_NO_DEGREE = 0, > + WALKER_45_DEGREE, > + WALKER_26_DEGREE, > + WALKER_26Z_DEGREE, > + WALKER_45Z_DEGREE, > +}; > +struct gpe_encoder_kernel_walker_parameter > +{ > + unsigned int walker_degree; > + unsigned int use_scoreboard; > + unsigned int scoreboard_mask; > + unsigned int no_dependency; > + unsigned int resolution_x; > + unsigned int resolution_y; > + unsigned int use_vertical_raster_scan; }; > + > extern void > gen8_gpe_media_object(VADriverContextP ctx, > struct i965_gpe_context *gpe_context, @@ > -555,6 +589,47 @@ gen8_gpe_pipe_control(VADriverContextP ctx, > struct intel_batchbuffer *batch, > struct gpe_pipe_control_parameter *param); > > +extern void > +i965_init_media_object_walker_parameter(struct > gpe_encoder_kernel_walker_parameter *kernel_walker_param, > + struct > +gpe_media_object_walker_parameter *walker_param); > + > +extern void > +gen9_add_2d_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + struct object_surface *obj_surface, > + int is_uv_surface, > + int is_media_block_rw, > + unsigned int format, > + int index); > +extern void > +gen9_add_adv_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + struct object_surface *obj_surface, > + int index); > +extern void > +gen9_add_buffer_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + struct i965_gpe_resource *gpe_buffer, > + int is_raw_buffer, > + unsigned int size, > + unsigned int offset, > + int index); extern void > +gen9_add_buffer_2d_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + struct i965_gpe_resource *gpe_buffer, > + int is_media_block_rw, > + unsigned int format, > + int index); extern void > +gen9_add_dri_buffer_gpe_surface(VADriverContextP ctx, > + struct i965_gpe_context *gpe_context, > + dri_bo *bo, > + int is_raw_buffer, > + unsigned int size, > + unsigned int offset, > + int index); > + > struct i965_gpe_table > { > void (*context_init)(VADriverContextP ctx, _______________________________________________ Libva mailing list Libva@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libva