[Libva] [PATCH 01/31] ENC: move gpe related function into src/i965_gpe_utils.h/c

Sean V Kelley seanvk at posteo.de
Tue Jan 10 23:37:43 UTC 2017


From: Pengfei Qu <Pengfei.Qu at intel.com>

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_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);
     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
+};
+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,
-- 
2.11.0



More information about the Libva mailing list