diff options
author | Zhao Yakui <yakui.zhao@intel.com> | 2016-11-16 12:23:39 -0500 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2016-11-17 11:12:27 +0800 |
commit | 188ff33df9aaac05f701650628ecee2321f382a3 (patch) | |
tree | 49c67189651951c7126d5fa46f9ca7935151cf25 | |
parent | 5b8e54fc106ca30655f372c0e1869c24df2f407e (diff) |
Add one API to initialize MEDIA_OBJECT_WALKER parameter for video post-processing
Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Reviewed-by: Xiang, Haihao<haihao.xiang@intel.com>
Reviewed-by: Sean V Kelley <seanvk@posteo.de>
-rw-r--r-- | src/i965_gpe_utils.c | 48 | ||||
-rw-r--r-- | src/i965_gpe_utils.h | 14 |
2 files changed, 62 insertions, 0 deletions
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c index d824c18..f394c07 100644 --- a/src/i965_gpe_utils.c +++ b/src/i965_gpe_utils.c @@ -2082,3 +2082,51 @@ gen9_gpe_media_object_walker(VADriverContextP ctx, ADVANCE_BATCH(batch); } + + +void +intel_vpp_init_media_object_walker_parameter(struct intel_vpp_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) { + /* The no_dependency is used for VPP */ + walker_param->scoreboard_mask = 0; + walker_param->use_scoreboard = 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 { + walker_param->local_end.x = 0; + walker_param->local_end.y = 0; + + // 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; + } +} diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h index 7415578..a70638b 100644 --- a/src/i965_gpe_utils.h +++ b/src/i965_gpe_utils.h @@ -508,4 +508,18 @@ gen9_gpe_media_object_walker(VADriverContextP ctx, struct intel_batchbuffer *batch, struct gpe_media_object_walker_parameter *param); + +struct intel_vpp_kernel_walker_parameter +{ + unsigned int use_scoreboard; + unsigned int scoreboard_mask; + unsigned int no_dependency; + unsigned int resolution_x; + unsigned int resolution_y; +}; + +extern void +intel_vpp_init_media_object_walker_parameter(struct intel_vpp_kernel_walker_parameter *kernel_walker_param, + struct gpe_media_object_walker_parameter *walker_param); + #endif /* _I965_GPE_UTILS_H_ */ |