From df3e296cbf95c842f77fed2727a495c6276a8c86 Mon Sep 17 00:00:00 2001 From: Sean V Kelley Date: Tue, 17 Jan 2017 15:01:36 -0800 Subject: Revert "ENC: move gpe related function into src/i965_gpe_utils.h/c" This reverts commit e1783804bcb35385ffabaeeeb8b4cc3c03d513e0. --- 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, 160 insertions(+), 356 deletions(-) (limited to 'src') diff --git a/src/gen9_vp9_encoder.c b/src/gen9_vp9_encoder.c index 32ed729..05d86da 100644 --- a/src/gen9_vp9_encoder.c +++ b/src/gen9_vp9_encoder.c @@ -58,6 +58,7 @@ #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_ @@ -841,7 +842,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 gpe_encoder_kernel_walker_parameter *kernel_walker_param, + struct vp9_encoder_kernel_walker_parameter *kernel_walker_param, struct gpe_media_object_walker_parameter *walker_param) { memset(walker_param, 0, sizeof(*walker_param)); @@ -922,6 +923,147 @@ 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, @@ -1349,7 +1491,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 gpe_encoder_kernel_walker_parameter kernel_walker_param; + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; @@ -2189,7 +2331,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 gpe_encoder_kernel_walker_parameter kernel_walker_param; + struct vp9_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) @@ -2329,7 +2471,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 gpe_encoder_kernel_walker_parameter kernel_walker_param; + struct vp9_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; @@ -2596,7 +2738,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 gpe_encoder_kernel_walker_parameter kernel_walker_param; + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; unsigned int resolution_x, resolution_y; media_function = VP9_MEDIA_STATE_DYS; @@ -3384,7 +3526,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 gpe_encoder_kernel_walker_parameter kernel_walker_param; + struct vp9_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 c61a796..972e2ad 100644 --- a/src/gen9_vp9_encoder.h +++ b/src/gen9_vp9_encoder.h @@ -83,6 +83,16 @@ 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 598c218..548cbf4 100644 --- a/src/i965_gpe_utils.c +++ b/src/i965_gpe_utils.c @@ -35,8 +35,6 @@ #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, @@ -1391,8 +1389,8 @@ i965_object_surface_to_2d_gpe_resource(struct i965_gpe_resource *res, 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->width = obj_surface->orig_width; + res->height = obj_surface->orig_height; res->pitch = obj_surface->width; res->size = obj_surface->size; res->cb_cr_pitch = obj_surface->cb_cr_pitch; @@ -2525,265 +2523,6 @@ 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 19ad341..52097d3 100644 --- a/src/i965_gpe_utils.h +++ b/src/i965_gpe_utils.h @@ -412,18 +412,6 @@ 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; @@ -519,29 +507,6 @@ 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, @@ -590,58 +555,6 @@ 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, -- cgit v1.2.3