-----Original Message-----
From: Libva [mailto:libva-boun...@lists.freedesktop.org] On Behalf Of Zhao Yakui
Sent: Wednesday, January 11, 2017 10:26 PM
To: libva@lists.freedesktop.org
Subject: Re: [Libva] [PATCH 01/31] ENC: move gpe related function into 
src/i965_gpe_utils.h/c

On 01/11/2017 07:37 AM, Sean V Kelley wrote:
> From: Pengfei Qu<pengfei...@intel.com>
>
> 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_gpe_utils.c   | 265 
> ++++++++++++++++++++++++++++++++++++++++++++++++-
>   src/i965_gpe_utils.h   |  87 ++++++++++++++++
>   4 files changed, 356 insertions(+), 160 deletions(-)
>
> diff --git a/src/gen9_vp9_encoder.c b/src/gen9_vp9_encoder.c index 
> 05d86dae..32ed729c 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 
> 972e2ada..c61a7965 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_gpe_utils.c b/src/i965_gpe_utils.c index 
> 548cbf4f..598c2180 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
> +
>   static void
>   i965_gpe_select(VADriverContextP ctx,
>                   struct i965_gpe_context *gpe_context, @@ -1389,8 
> +1391,8 @@ i965_object_surface_to_2d_gpe_resource(struct i965_gpe_resource 
> *res,
>       unsigned int swizzle;
>
>       res->type = I965_GPE_RESOURCE_2D;
> -    res->width = obj_surface->orig_width;
> -    res->height = obj_surface->orig_height;
> +    res->width = ALIGN(obj_surface->orig_width,16);
> +    res->height = ALIGN(obj_surface->orig_height,16);

Why is the width/height aligned to 16?
In such case if it is used for MEDIA_BLOCK_RW or Sampler, the garbage date will 
be returned/written.
[Pengfei] sure. It is really issue. I will add a align version for this 
function and use it in the AVC. For 1080 height, It will cause the quality drop 
issue in the internal calculation.

>       res->pitch = obj_surface->width;
>       res->size = obj_surface->size;
>       res->cb_cr_pitch = obj_surface->cb_cr_pitch;
> @@ -2523,6 +2525,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->mbenc_i_frame_dist_in_use || 
> 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);
> +}
> +
> +/*
> +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 52097d3d..19ad341e 100644
> --- a/src/i965_gpe_utils.h
> +++ b/src/i965_gpe_utils.h
> @@ -412,6 +412,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 +519,29 @@ 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_46_DEGREE,    // VP8 HybridPak2Pattern
> +    WALKER_26Z_DEGREE,   // HEVC
> +    WALKER_45Z_DEGREE,   // VP9 MB ENC I 16x16, P
> +    WALKER_26X_DEGREE,   // HEVC
> +    WALKER_26ZX_DEGREE   // HEVC
> +};

Please remove the above comments.
At the same time it will be better to remove the unused walker_degree.
[Pengfei] sure. It will be clear.

> +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;
> +    unsigned int mbenc_i_frame_dist_in_use;
> +};
> +
>   extern void
>   gen8_gpe_media_object(VADriverContextP ctx,
>                         struct i965_gpe_context *gpe_context,
> @@ -555,6 +590,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);
> +/*
> +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,

_______________________________________________
Libva mailing list
Libva@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________
Libva mailing list
Libva@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to