[Libva] [PATCH v2 1/9] ENC: move gpe related function into src/i965_gpe_utils.h/c
Zhao Yakui
yakui.zhao at intel.com
Mon Jan 23 02:11:17 UTC 2017
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.Qu at intel.com>
> Reviewed-by: Sean V Kelley<seanvk at 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?
> +
> 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,
More information about the Libva
mailing list