[Libva] [PATCH 3/8] Add one API to initialize MEDIA_OBJECT_WALKER parameter for video post-processing

Zhao Yakui yakui.zhao at intel.com
Wed Nov 9 19:39:49 UTC 2016


Signed-off-by: Zhao Yakui <yakui.zhao at intel.com>
---
 src/i965_gpe_utils.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/i965_gpe_utils.h | 14 ++++++++++++++
 2 files changed, 62 insertions(+)

diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index 3cd41e8..30529e1 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 c56d3d5..383fcdf 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_ */
-- 
2.8.3



More information about the Libva mailing list