summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2016-11-16 12:23:39 -0500
committerXiang, Haihao <haihao.xiang@intel.com>2016-11-17 11:12:27 +0800
commit188ff33df9aaac05f701650628ecee2321f382a3 (patch)
tree49c67189651951c7126d5fa46f9ca7935151cf25
parent5b8e54fc106ca30655f372c0e1869c24df2f407e (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.c48
-rw-r--r--src/i965_gpe_utils.h14
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_ */