[Libva] [PATCH v1 1/9] ENC: move gpe related function into src/i965_gpe_utils.h/c

Qu, Pengfei pengfei.qu at intel.com
Wed Jan 18 11:26:27 UTC 2017



-----Original Message-----
From: Zhao, Yakui 
Sent: Tuesday, January 17, 2017 8:55 AM
To: Qu, Pengfei <pengfei.qu at intel.com>
Cc: libva at lists.freedesktop.org
Subject: Re: [Libva] [PATCH v1 1/9] ENC: move gpe related function into src/i965_gpe_utils.h/c

On 01/13/2017 05:24 PM, Pengfei Qu wrote:
> v1:
> add align version for obj surface conversion to gpe surface remove 
> comments and enum value
>

This version patch looks much clearer.

But it seems that the this patch still adds more defintions besides moving the GPE functions for generic usage.
[Pengfei] the function will be commented out.

> 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   | 282 +++++++++++++++++++++++++++++++++++++++++++++++++
>   src/i965_gpe_utils.h   |  86 +++++++++++++++
>   5 files changed, 377 insertions(+), 158 deletions(-)
>
> 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 index 
> 941ad4e..a5ca7bf 100755
> --- 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..62520e8 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
> +

Please use the GEN9_CACHE_PTE 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,265 @@ 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);
> +}
> +
It seems that the below function is not defined or declared as it is commented.
It will be better that it is removed.

If it is really useful, please remove the comment so that it is defined/declared.


> +/*
> +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_gpe_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);
> +}
> +*/
> +
>   bool
>   i965_gpe_table_init(VADriverContextP ctx)
>   {
> diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
> index 52097d3..3efcb19 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,58 @@ 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);

It seems that the below function is not defined or declared as it is 
commented.
It will be better that it is removed.

> +/*
> +extern 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_table
>   {
>       void (*context_init)(VADriverContextP ctx,



More information about the Libva mailing list