Discussion:
[PATCH 1/8] Fix the incorrect sampler_state offset for INTERFACE_DESCRIPTOR_DATA on BDW+
(too old to reply)
Zhao Yakui
2016-11-09 19:39:47 UTC
Permalink
Signed-off-by: Zhao Yakui <***@intel.com>
---
src/i965_gpe_utils.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index 3ec164d..a29237b 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1684,7 +1684,7 @@ gen8_gpe_setup_interface_data(VADriverContextP ctx,
memset(desc, 0, sizeof(*desc));
desc->desc0.kernel_start_pointer = kernel->kernel_offset >> 6;
desc->desc3.sampler_count = 0;
- desc->desc3.sampler_state_pointer = gpe_context->sampler_offset;
+ desc->desc3.sampler_state_pointer = (gpe_context->sampler_offset >> 5);
desc->desc4.binding_table_entry_count = 0;
desc->desc4.binding_table_pointer = (gpe_context->surface_state_binding_table.binding_table_offset >> 5);
desc->desc5.constant_urb_entry_read_offset = 0;
--
2.8.3
Zhao Yakui
2016-11-09 19:39:48 UTC
Permalink
Signed-off-by: Zhao Yakui <***@intel.com>
---
src/i965_gpe_utils.c | 16 ++++++++++++----
src/i965_gpe_utils.h | 1 +
2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index a29237b..3cd41e8 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1864,8 +1864,12 @@ gen9_gpe_context_add_surface(struct i965_gpe_context *gpe_context,
height = gpe_resource->height / 2;
pitch = gpe_resource->pitch;

- if (gpe_surface->is_media_block_rw)
- width = (ALIGN(width, 4) >> 2);
+ if (gpe_surface->is_media_block_rw) {
+ if (gpe_surface->is_10bit)
+ width = (ALIGN(width * 2, 4) >> 2);
+ else
+ width = (ALIGN(width, 4) >> 2);
+ }

if (tiling == I915_TILING_Y) {
tile_alignment = 32;
@@ -1897,8 +1901,12 @@ gen9_gpe_context_add_surface(struct i965_gpe_context *gpe_context,
height = gpe_resource->height;
pitch = gpe_resource->pitch;

- if (gpe_surface->is_media_block_rw)
- width = (ALIGN(width, 4) >> 2);
+ if (gpe_surface->is_media_block_rw) {
+ if (gpe_surface->is_10bit)
+ width = (ALIGN(width * 2, 4) >> 2);
+ else
+ width = (ALIGN(width, 4) >> 2);
+ }

gen9_gpe_set_2d_surface_state(ss,
gpe_surface->cacheability_control,
diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
index 39a6fad..c56d3d5 100644
--- a/src/i965_gpe_utils.h
+++ b/src/i965_gpe_utils.h
@@ -417,6 +417,7 @@ struct i965_gpe_surface
unsigned int is_uv_surface:1;
unsigned int is_media_block_rw:1;
unsigned int is_raw_buffer:1;
+ unsigned int is_10bit :1;

unsigned int vert_line_stride_offset;
unsigned int vert_line_stride;
--
2.8.3
Xiang, Haihao
2016-11-11 05:02:20 UTC
Permalink
---
 src/i965_gpe_utils.c | 16 ++++++++++++----
 src/i965_gpe_utils.h |  1 +
 2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index a29237b..3cd41e8 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1864,8 +1864,12 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
         height = gpe_resource->height / 2;
         pitch = gpe_resource->pitch;
 
-        if (gpe_surface->is_media_block_rw)
-            width = (ALIGN(width, 4) >> 2);
+        if (gpe_surface->is_media_block_rw) {
+            if (gpe_surface->is_10bit)
+                width = (ALIGN(width * 2, 4) >> 2);
+            else
+                width = (ALIGN(width, 4) >> 2);
+        }
 
         if (tiling == I915_TILING_Y) {
             tile_alignment = 32;
@@ -1897,8 +1901,12 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
         height = gpe_resource->height;
         pitch = gpe_resource->pitch;
 
-        if (gpe_surface->is_media_block_rw)
-            width = (ALIGN(width, 4) >> 2);
+        if (gpe_surface->is_media_block_rw) {
+            if (gpe_surface->is_10bit)
+                width = (ALIGN(width * 2, 4) >> 2);
+            else
+                width = (ALIGN(width, 4) >> 2);
+        }
 
         gen9_gpe_set_2d_surface_state(ss,
                                       gpe_surface-
Post by Zhao Yakui
cacheability_control,
diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
index 39a6fad..c56d3d5 100644
--- a/src/i965_gpe_utils.h
+++ b/src/i965_gpe_utils.h
@@ -417,6 +417,7 @@ struct i965_gpe_surface
     unsigned int is_uv_surface:1;
     unsigned int is_media_block_rw:1;
     unsigned int is_raw_buffer:1;
+    unsigned int is_10bit     :1;
Do you have a better way if considering to support other >8bit format,
such as 12bits, 16bits etc in the future?
 
     unsigned int vert_line_stride_offset;
     unsigned int vert_line_stride;
Zhao Yakui
2016-11-11 05:32:09 UTC
Permalink
Post by Zhao Yakui
---
src/i965_gpe_utils.c | 16 ++++++++++++----
src/i965_gpe_utils.h | 1 +
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index a29237b..3cd41e8 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1864,8 +1864,12 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
height = gpe_resource->height / 2;
pitch = gpe_resource->pitch;
- if (gpe_surface->is_media_block_rw)
- width = (ALIGN(width, 4)>> 2);
+ if (gpe_surface->is_media_block_rw) {
+ if (gpe_surface->is_10bit)
+ width = (ALIGN(width * 2, 4)>> 2);
+ else
+ width = (ALIGN(width, 4)>> 2);
+ }
if (tiling == I915_TILING_Y) {
tile_alignment = 32;
@@ -1897,8 +1901,12 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
height = gpe_resource->height;
pitch = gpe_resource->pitch;
- if (gpe_surface->is_media_block_rw)
- width = (ALIGN(width, 4)>> 2);
+ if (gpe_surface->is_media_block_rw) {
+ if (gpe_surface->is_10bit)
+ width = (ALIGN(width * 2, 4)>> 2);
+ else
+ width = (ALIGN(width, 4)>> 2);
+ }
gen9_gpe_set_2d_surface_state(ss,
gpe_surface-
Post by Zhao Yakui
cacheability_control,
diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
index 39a6fad..c56d3d5 100644
--- a/src/i965_gpe_utils.h
+++ b/src/i965_gpe_utils.h
@@ -417,6 +417,7 @@ struct i965_gpe_surface
unsigned int is_uv_surface:1;
unsigned int is_media_block_rw:1;
unsigned int is_raw_buffer:1;
+ unsigned int is_10bit :1;
Do you have a better way if considering to support other>8bit format,
such as 12bits, 16bits etc in the future?
This is only to indicate that it is greater than 8-bit.
For the 12bit/16bit, it can be handled very well.
How about using is_16bpp?
Post by Zhao Yakui
unsigned int vert_line_stride_offset;
unsigned int vert_line_stride;
Xiang, Haihao
2016-11-11 07:34:42 UTC
Permalink
Post by Zhao Yakui
---
  src/i965_gpe_utils.c | 16 ++++++++++++----
  src/i965_gpe_utils.h |  1 +
  2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index a29237b..3cd41e8 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1864,8 +1864,12 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
          height = gpe_resource->height / 2;
          pitch = gpe_resource->pitch;
-        if (gpe_surface->is_media_block_rw)
-            width = (ALIGN(width, 4)>>  2);
+        if (gpe_surface->is_media_block_rw) {
+            if (gpe_surface->is_10bit)
+                width = (ALIGN(width * 2, 4)>>  2);
+            else
+                width = (ALIGN(width, 4)>>  2);
+        }
          if (tiling == I915_TILING_Y) {
              tile_alignment = 32;
@@ -1897,8 +1901,12 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
          height = gpe_resource->height;
          pitch = gpe_resource->pitch;
-        if (gpe_surface->is_media_block_rw)
-            width = (ALIGN(width, 4)>>  2);
+        if (gpe_surface->is_media_block_rw) {
+            if (gpe_surface->is_10bit)
+                width = (ALIGN(width * 2, 4)>>  2);
+            else
+                width = (ALIGN(width, 4)>>  2);
+        }
          gen9_gpe_set_2d_surface_state(ss,
                                        gpe_surface-
Post by Zhao Yakui
cacheability_control,
diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
index 39a6fad..c56d3d5 100644
--- a/src/i965_gpe_utils.h
+++ b/src/i965_gpe_utils.h
@@ -417,6 +417,7 @@ struct i965_gpe_surface
      unsigned int is_uv_surface:1;
      unsigned int is_media_block_rw:1;
      unsigned int is_raw_buffer:1;
+    unsigned int is_10bit     :1;
Do you have a better way if considering to support other>8bit format,
such as 12bits, 16bits etc in the future?
This is only to indicate that it is greater than 8-bit.
For the 12bit/16bit, it can be handled very well.
How about using is_16bpp?
I am fine to use is_16bpp, If so, please update the corresponding
patches.
Post by Zhao Yakui
      unsigned int vert_line_stride_offset;
      unsigned int vert_line_stride;
Zhao Yakui
2016-11-09 19:39:49 UTC
Permalink
Signed-off-by: Zhao Yakui <***@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
Xiang, Haihao
2016-11-11 05:08:53 UTC
Permalink
LGTM.
---
 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-
Post by Zhao Yakui
use_scoreboard;
+
+    walker_param->block_resolution.x = kernel_walker_param-
Post by Zhao Yakui
resolution_x;
+    walker_param->block_resolution.y = kernel_walker_param-
Post by Zhao Yakui
resolution_y;
+
+    walker_param->global_resolution.x = kernel_walker_param-
Post by Zhao Yakui
resolution_x;
+    walker_param->global_resolution.y = kernel_walker_param-
Post by Zhao Yakui
resolution_y;
+
+    walker_param->global_outer_loop_stride.x = kernel_walker_param-
Post by Zhao Yakui
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-
Post by Zhao Yakui
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-
Post by Zhao Yakui
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_ */
Sean V Kelley
2016-11-14 22:14:45 UTC
Permalink
lgtm

Sean
Post by Zhao Yakui
---
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
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
--
Sean V. Kelley <***@intel.com>
Open Source Technology Center / SSG
Intel Corp.
Zhao Yakui
2016-11-09 19:39:50 UTC
Permalink
Signed-off-by: Zhao Yakui <***@intel.com>
---
src/gen75_picture_process.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
index 0b681f1..95bbcd6 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -148,6 +148,12 @@ gen75_proc_picture(VADriverContextP ctx,
goto error;
}

+ if (pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ){
+ /* explicitly initialize the VPP based on Render ring */
+ if (proc_ctx->vpp_fmt_cvt_ctx == NULL)
+ proc_ctx->vpp_fmt_cvt_ctx = i965_proc_context_init(ctx, NULL);
+ }
+
if (!obj_dst_surf->bo) {
unsigned int is_tiled = 1;
unsigned int fourcc = VA_FOURCC_NV12;
--
2.8.3
Xiang, Haihao
2016-11-11 05:40:01 UTC
Permalink
---
 src/gen75_picture_process.c | 6 ++++++
 1 file changed, 6 insertions(+)
diff --git a/src/gen75_picture_process.c
b/src/gen75_picture_process.c
index 0b681f1..95bbcd6 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -148,6 +148,12 @@ gen75_proc_picture(VADriverContextP ctx,
         goto error;
     }
 
+    if (pipeline_param->num_filters == 0 || pipeline_param->filters
== NULL ){
+        /* explicitly initialize the VPP based on Render ring */
+        if (proc_ctx->vpp_fmt_cvt_ctx == NULL)
+            proc_ctx->vpp_fmt_cvt_ctx = i965_proc_context_init(ctx,
NULL);
+    }
+
If so, the code to set  proc_ctx->vpp_fmt_cvt_ctx in
gen75_vpp_fmt_cvt() is unnecessary now, could you remove it?
     if (!obj_dst_surf->bo) {
         unsigned int is_tiled = 1;
         unsigned int fourcc = VA_FOURCC_NV12;
Zhao Yakui
2016-11-11 06:03:15 UTC
Permalink
Post by Zhao Yakui
---
src/gen75_picture_process.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/gen75_picture_process.c
b/src/gen75_picture_process.c
index 0b681f1..95bbcd6 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -148,6 +148,12 @@ gen75_proc_picture(VADriverContextP ctx,
goto error;
}
+ if (pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ){
+ /* explicitly initialize the VPP based on Render ring */
+ if (proc_ctx->vpp_fmt_cvt_ctx == NULL)
+ proc_ctx->vpp_fmt_cvt_ctx = i965_proc_context_init(ctx, NULL);
+ }
+
If so, the code to set proc_ctx->vpp_fmt_cvt_ctx in
gen75_vpp_fmt_cvt() is unnecessary now, could you remove it?
Sure. It will be removed in next version.
Thanks for the review.
Post by Zhao Yakui
if (!obj_dst_surf->bo) {
unsigned int is_tiled = 1;
unsigned int fourcc = VA_FOURCC_NV12;
Zhao Yakui
2016-11-09 19:39:52 UTC
Permalink
Otherwise it still selects NV12 for 10-bit surfaces, which is wrong.

Signed-off-by: Zhao Yakui <***@intel.com>
---
src/gen75_picture_process.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
index 95bbcd6..069088a 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -158,6 +158,10 @@ gen75_proc_picture(VADriverContextP ctx,
unsigned int is_tiled = 1;
unsigned int fourcc = VA_FOURCC_NV12;
int sampling = SUBSAMPLE_YUV420;
+
+ if (obj_dst_surf->expected_format == VA_RT_FORMAT_YUV420_10BPP)
+ fourcc = VA_FOURCC_P010;
+
i965_check_alloc_surface_bo(ctx, obj_dst_surf, is_tiled, fourcc, sampling);
}
--
2.8.3
Xiang, Haihao
2016-11-11 07:16:53 UTC
Permalink
LGTM.
Post by Zhao Yakui
Otherwise it still selects NV12 for 10-bit surfaces, which is wrong.
---
 src/gen75_picture_process.c | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/src/gen75_picture_process.c
b/src/gen75_picture_process.c
index 95bbcd6..069088a 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -158,6 +158,10 @@ gen75_proc_picture(VADriverContextP ctx,
         unsigned int is_tiled = 1;
         unsigned int fourcc = VA_FOURCC_NV12;
         int sampling = SUBSAMPLE_YUV420;
+
+        if (obj_dst_surf->expected_format ==
VA_RT_FORMAT_YUV420_10BPP)
+            fourcc = VA_FOURCC_P010;
+
         i965_check_alloc_surface_bo(ctx, obj_dst_surf, is_tiled,
fourcc, sampling);
     }  
 
Sean V Kelley
2016-11-14 22:44:14 UTC
Permalink
Post by Zhao Yakui
Otherwise it still selects NV12 for 10-bit surfaces, which is wrong.
lgtm.

Sean
Post by Zhao Yakui
---
src/gen75_picture_process.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
index 95bbcd6..069088a 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -158,6 +158,10 @@ gen75_proc_picture(VADriverContextP ctx,
unsigned int is_tiled = 1;
unsigned int fourcc = VA_FOURCC_NV12;
int sampling = SUBSAMPLE_YUV420;
+
+ if (obj_dst_surf->expected_format == VA_RT_FORMAT_YUV420_10BPP)
+ fourcc = VA_FOURCC_P010;
+
i965_check_alloc_surface_bo(ctx, obj_dst_surf, is_tiled, fourcc, sampling);
}
--
2.8.3
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
--
Sean V. Kelley <***@intel.com>
Open Source Technology Center / SSG
Intel Corp.
Zhao Yakui
2016-11-09 19:39:51 UTC
Permalink
Signed-off-by: Zhao Yakui <***@intel.com>
---
src/gen75_vpp_vebox.c | 2 +
src/gen75_vpp_vebox.h | 1 -
src/gen8_post_processing.c | 5 +
src/gen8_post_processing.h | 9 +
src/gen9_post_processing.c | 487 +++++++++++++++
src/i965_drv_video.c | 2 +
src/i965_encoder.c | 2 +
src/i965_gpe_utils.c | 30 +-
src/i965_gpe_utils.h | 4 +-
src/i965_post_processing.h | 10 +
src/i965_render.h | 1 -
src/shaders/post_processing/gen9/conv_p010.g9b | 783 +++++++++++++++++++++++++
12 files changed, 1332 insertions(+), 4 deletions(-)
create mode 100644 src/shaders/post_processing/gen9/conv_p010.g9b

diff --git a/src/gen75_vpp_vebox.c b/src/gen75_vpp_vebox.c
index a71f905..0c52765 100644
--- a/src/gen75_vpp_vebox.c
+++ b/src/gen75_vpp_vebox.c
@@ -39,6 +39,8 @@
#include "gen75_vpp_vebox.h"
#include "intel_media.h"

+#include "i965_post_processing.h"
+
#define PI 3.1415926

extern VAStatus
diff --git a/src/gen75_vpp_vebox.h b/src/gen75_vpp_vebox.h
index 740c383..d1fb32d 100644
--- a/src/gen75_vpp_vebox.h
+++ b/src/gen75_vpp_vebox.h
@@ -36,7 +36,6 @@
#include <va/va_vpp.h>
#include "i965_drv_video.h"

-#include "i965_post_processing.h"
#include "gen75_vpp_gpe.h"

#define INPUT_SURFACE 0
diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
index 687cedc..708918b 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -1539,6 +1539,11 @@ static void
gen8_post_processing_context_finalize(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
+ if (pp_context->scaling_context_initialized) {
+ gen8_gpe_context_destroy(&pp_context->scaling_10bit_context);
+ pp_context->scaling_context_initialized = 0;
+ }
+
if(pp_context->vebox_proc_ctx){
gen75_vebox_context_destroy(ctx,pp_context->vebox_proc_ctx);
pp_context->vebox_proc_ctx = NULL;
diff --git a/src/gen8_post_processing.h b/src/gen8_post_processing.h
index f3c09a8..bd0601a 100644
--- a/src/gen8_post_processing.h
+++ b/src/gen8_post_processing.h
@@ -85,4 +85,13 @@ gen8_post_processing_context_common_init(VADriverContextP ctx,
struct pp_module *pp_modules,
int num_pp_modules,
struct intel_batchbuffer *batch);
+extern VAStatus
+gen9_p010_scaling_post_processing(
+ VADriverContextP ctx,
+ struct i965_post_processing_context *pp_context,
+ struct i965_surface *src_surface,
+ VARectangle *src_rect,
+ struct i965_surface *dst_surface,
+ VARectangle *dst_rect);
+
#endif
diff --git a/src/gen9_post_processing.c b/src/gen9_post_processing.c
index 46a156f..a4d212b 100644
--- a/src/gen9_post_processing.c
+++ b/src/gen9_post_processing.c
@@ -103,6 +103,46 @@ static const uint32_t pp_nv12_load_save_rgbx_gen9[][4] = {
static const uint32_t pp_nv12_blending_gen9[][4] = {
};

+#define MAX_SCALING_SURFACES 16
+
+#define DEFAULT_MOCS 0x02
+#define SRC_MSB 0x0001
+#define DST_MSB 0x0002
+#define SRC_PACKED 0x0004
+#define DST_PACKED 0x0008
+#define PACKED_MASK 0x000C
+
+#define BTI_SCALING_INPUT_Y 0
+#define BTI_SCALING_OUTPUT_Y 8
+
+struct scaling_input_parameter {
+ unsigned int input_data[5];
+
+ float inv_width;
+ float inv_height;
+
+ struct {
+ unsigned int src_msb : 1;
+ unsigned int dst_msb : 1;
+ unsigned int src_packed : 1;
+ unsigned int dst_packed : 1;
+ unsigned int reserved : 28;
+ } dw7;
+
+ int x_dst;
+ int y_dst;
+ float x_factor; // src_rect_width / dst_rect_width / Surface_width
+ float y_factor; // src_rect_height / dst_rect_height / Surface_height
+ float x_orig;
+ float y_orig;
+ unsigned int bti_input;
+ unsigned int bti_output;
+};
+
+static const uint32_t pp_10bit_scaling_gen9[][4] = {
+#include "shaders/post_processing/gen9/conv_p010.g9b"
+};
+
static struct pp_module pp_modules_gen9[] = {
{
{
@@ -438,15 +478,462 @@ gen9_post_processing(VADriverContextP ctx,
return va_status;
}

+static void
+gen9_p010_scaling_sample_state(VADriverContextP ctx,
+ struct i965_gpe_context *gpe_context,
+ VARectangle *src_rect,
+ VARectangle *dst_rect)
+{
+ struct gen8_sampler_state *sampler_state;
+
+ if (gpe_context == NULL || !src_rect || !dst_rect)
+ return;
+ dri_bo_map(gpe_context->dynamic_state.bo, 1);
+
+ if (gpe_context->dynamic_state.bo->virtual == NULL)
+ return;
+
+ assert(gpe_context->dynamic_state.bo->virtual);
+
+ sampler_state = (struct gen8_sampler_state *)
+ (gpe_context->dynamic_state.bo->virtual + gpe_context->sampler_offset);
+
+ memset(sampler_state, 0, sizeof(*sampler_state));
+
+ if ((src_rect->width == dst_rect->width) &&
+ (src_rect->height == dst_rect->height)) {
+ sampler_state->ss0.min_filter = I965_MAPFILTER_NEAREST;
+ sampler_state->ss0.mag_filter = I965_MAPFILTER_NEAREST;
+ } else {
+ sampler_state->ss0.min_filter = I965_MAPFILTER_LINEAR;
+ sampler_state->ss0.mag_filter = I965_MAPFILTER_LINEAR;
+ }
+
+ sampler_state->ss3.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+ sampler_state->ss3.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+ sampler_state->ss3.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+
+ dri_bo_unmap(gpe_context->dynamic_state.bo);
+}
+
void
gen9_post_processing_context_init(VADriverContextP ctx,
void *data,
struct intel_batchbuffer *batch)
{
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = data;
+ struct i965_gpe_context *gpe_context;
+ struct i965_kernel scaling_kernel;

gen8_post_processing_context_common_init(ctx, data, pp_modules_gen9, ARRAY_ELEMS(pp_modules_gen9), batch);
avs_init_state(&pp_context->pp_avs_context.state, &gen9_avs_config);

pp_context->intel_post_processing = gen9_post_processing;
+
+ gpe_context = &pp_context->scaling_10bit_context;
+ memset(&scaling_kernel, 0, sizeof(scaling_kernel));
+ scaling_kernel.bin = pp_10bit_scaling_gen9;
+ scaling_kernel.size = sizeof(pp_10bit_scaling_gen9);
+ gen8_gpe_load_kernels(ctx, gpe_context, &scaling_kernel, 1);
+ gpe_context->idrt_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64);
+ gpe_context->sampler_size = ALIGN(sizeof(struct gen8_sampler_state), 64);
+ gpe_context->curbe_size = ALIGN(sizeof(struct scaling_input_parameter), 64);
+ gpe_context->curbe.length = gpe_context->curbe_size;
+
+ gpe_context->surface_state_binding_table.max_entries = MAX_SCALING_SURFACES;
+ gpe_context->surface_state_binding_table.binding_table_offset = 0;
+ gpe_context->surface_state_binding_table.surface_state_offset = ALIGN(MAX_SCALING_SURFACES * 4, 64);
+ gpe_context->surface_state_binding_table.length = ALIGN(MAX_SCALING_SURFACES * 4, 64) + ALIGN(MAX_SCALING_SURFACES * SURFACE_STATE_PADDED_SIZE_GEN9, 64);
+
+ if (i965->intel.has_bsd2)
+ gpe_context->vfe_state.max_num_threads = 300;
+ else
+ gpe_context->vfe_state.max_num_threads = 60;
+
+ gpe_context->vfe_state.curbe_allocation_size = 37;
+ gpe_context->vfe_state.urb_entry_size = 16;
+ gpe_context->vfe_state.num_urb_entries = 127;
+ gpe_context->vfe_state.gpgpu_mode = 0;
+
+ gen8_gpe_context_init(ctx, gpe_context);
+ pp_context->scaling_context_initialized = 1;
+ return;
+}
+
+static void
+gen9_add_dri_buffer_2d_gpe_surface(VADriverContextP ctx,
+ struct i965_gpe_context *gpe_context,
+ dri_bo *bo,
+ unsigned int bo_offset,
+ unsigned int width,
+ unsigned int height,
+ unsigned int pitch,
+ int is_media_block_rw,
+ unsigned int format,
+ int index,
+ int is_10bit)
+{
+ struct i965_gpe_resource gpe_resource;
+ struct i965_gpe_surface gpe_surface;
+
+ i965_gpe_dri_object_to_2d_gpe_resource(&gpe_resource, bo, width, height, pitch);
+ memset(&gpe_surface, 0, sizeof(gpe_surface));
+ gpe_surface.gpe_resource = &gpe_resource;
+ 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;
+ gpe_surface.is_override_offset = 1;
+ gpe_surface.offset = bo_offset;
+ gpe_surface.is_10bit = is_10bit;
+
+ gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index);
+
+ i965_free_gpe_resource(&gpe_resource);
+}
+
+static void
+gen9_run_kernel_media_object_walker(VADriverContextP ctx,
+ struct intel_batchbuffer *batch,
+ struct i965_gpe_context *gpe_context,
+ struct gpe_media_object_walker_parameter *param)
+{
+ if (!batch || !gpe_context || !param)
+ return;
+
+ intel_batchbuffer_start_atomic(batch, 0x1000);
+
+ intel_batchbuffer_emit_mi_flush(batch);
+
+ gen9_gpe_pipeline_setup(ctx, gpe_context, batch);
+ gen9_gpe_media_object_walker(ctx, gpe_context, batch, param);
+ gen8_gpe_media_state_flush(ctx, gpe_context, batch);
+
+ gen9_gpe_pipeline_end(ctx, gpe_context, batch);
+
+ intel_batchbuffer_end_atomic(batch);
+
+ intel_batchbuffer_flush(batch);
+ return;
+}
+
+static unsigned int
+pp_get_surface_fourcc(VADriverContextP ctx, struct i965_surface *surface)
+{
+ unsigned int fourcc;
+
+ if (surface->type == I965_SURFACE_TYPE_IMAGE) {
+ struct object_image *obj_image = (struct object_image *)surface->base;
+ fourcc = obj_image->image.format.fourcc;
+ } else {
+ struct object_surface *obj_surface = (struct object_surface *)surface->base;
+ fourcc = obj_surface->fourcc;
+ }
+
+ return fourcc;
+}
+
+static void
+gen9_gpe_context_p010_scaling_curbe(VADriverContextP ctx,
+ struct i965_gpe_context *gpe_context,
+ VARectangle *src_rect,
+ struct i965_surface *src_surface,
+ VARectangle *dst_rect,
+ struct i965_surface *dst_surface)
+{
+ struct scaling_input_parameter *scaling_curbe;
+ float src_width, src_height;
+ float coeff;
+ unsigned int fourcc;
+
+ if ((gpe_context == NULL) ||
+ (src_rect == NULL) || (src_surface == NULL) ||
+ (dst_rect == NULL) || (dst_surface == NULL))
+ return;
+
+ scaling_curbe = gen8p_gpe_context_map_curbe(gpe_context);
+
+ if (!scaling_curbe)
+ return;
+
+ memset(scaling_curbe, 0, sizeof(struct scaling_input_parameter));
+
+ scaling_curbe->bti_input = BTI_SCALING_INPUT_Y;
+ scaling_curbe->bti_output = BTI_SCALING_OUTPUT_Y;
+
+ /* As the src_rect/dst_rect is already checked, it is skipped.*/
+ scaling_curbe->x_dst = dst_rect->x;
+ scaling_curbe->y_dst = dst_rect->y;
+
+ src_width = src_rect->x + src_rect->width;
+ src_height = src_rect->y + src_rect->height;
+
+ scaling_curbe->inv_width = 1 / src_width;
+ scaling_curbe->inv_height = 1 / src_height;
+
+ coeff = (float) (src_rect->width) / dst_rect->width;
+ scaling_curbe->x_factor = coeff / src_width;
+ scaling_curbe->x_orig = (float)(src_rect->x) / src_width;
+
+ coeff = (float) (src_rect->height) / dst_rect->height;
+ scaling_curbe->y_factor = coeff / src_height;
+ scaling_curbe->y_orig = (float)(src_rect->y) / src_height;
+
+ fourcc = pp_get_surface_fourcc(ctx, src_surface);
+ if (fourcc == VA_FOURCC_P010) {
+ scaling_curbe->dw7.src_packed = 1;
+ scaling_curbe->dw7.src_msb = 1;
+ }
+ /* I010 will use LSB */
+
+ fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+
+ if (fourcc == VA_FOURCC_P010) {
+ scaling_curbe->dw7.dst_packed = 1;
+ scaling_curbe->dw7.dst_msb = 1;
+ }
+ /* I010 will use LSB */
+
+ gen8p_gpe_context_unmap_curbe(gpe_context);
+}
+
+static bool
+gen9_pp_context_get_surface_conf(VADriverContextP ctx,
+ struct i965_surface *surface,
+ VARectangle *rect,
+ int *width,
+ int *height,
+ int *pitch,
+ int *bo_offset)
+{
+ unsigned int fourcc;
+ if (!rect || !surface || !width || !height || !pitch || !bo_offset)
+ return false;
+
+ if (surface->base == NULL)
+ return false;
+
+ fourcc = pp_get_surface_fourcc(ctx, surface);
+ if (surface->type == I965_SURFACE_TYPE_SURFACE) {
+ struct object_surface *obj_surface;
+
+ obj_surface = (struct object_surface *)surface->base;
+ width[0] = MIN(rect->x + rect->width, obj_surface->orig_width);
+ height[0] = MIN(rect->y + rect->height, obj_surface->orig_height);
+ pitch[0] = obj_surface->width;
+ bo_offset[0] = 0;
+
+ if (fourcc == VA_FOURCC_P010) {
+ width[1] = width[0] / 2;
+ height[1] = height[0] / 2;
+ pitch[1] = obj_surface->cb_cr_pitch;
+ bo_offset[1] = obj_surface->width * obj_surface->y_cb_offset;
+ } else {
+ /* I010 format */
+ width[1] = width[0] / 2;
+ height[1] = height[0] / 2;
+ pitch[1] = obj_surface->cb_cr_pitch;
+ bo_offset[1] = obj_surface->width * obj_surface->y_cb_offset;
+ width[2] = width[0] / 2;
+ height[2] = height[0] / 2;
+ pitch[2] = obj_surface->cb_cr_pitch;
+ bo_offset[2] = obj_surface->width * obj_surface->y_cr_offset;
+ }
+
+ } else {
+ struct object_image *obj_image;
+
+ obj_image = (struct object_image *)surface->base;
+
+ width[0] = MIN(rect->x + rect->width, obj_image->image.width);
+ height[0] = MIN(rect->y + rect->height, obj_image->image.height);
+ pitch[0] = obj_image->image.pitches[0];
+ bo_offset[0] = obj_image->image.offsets[0];
+
+ if (fourcc == VA_FOURCC_P010) {
+ width[1] = width[0] / 2;
+ height[1] = height[0] / 2;
+ pitch[1] = obj_image->image.pitches[1];
+ bo_offset[1] = obj_image->image.offsets[1];
+ } else {
+ /* I010 format */
+ width[1] = width[0] / 2;
+ height[1] = height[0] / 2;
+ pitch[1] = obj_image->image.pitches[1];
+ bo_offset[1] = obj_image->image.offsets[1];
+ width[2] = width[0] / 2;
+ height[2] = height[0] / 2;
+ pitch[2] = obj_image->image.pitches[2];
+ bo_offset[2] = obj_image->image.offsets[2];
+ }
+
+ }
+
+ return true;
+}
+
+static void
+gen9_gpe_context_p010_scaling_surfaces(VADriverContextP ctx,
+ struct i965_gpe_context *gpe_context,
+ VARectangle *src_rect,
+ struct i965_surface *src_surface,
+ VARectangle *dst_rect,
+ struct i965_surface *dst_surface)
+{
+ unsigned int fourcc;
+ int width[3], height[3], pitch[3], bo_offset[3];
+ dri_bo *bo;
+ struct object_surface *obj_surface;
+ struct object_image *obj_image;
+ int bti;
+
+ if ((gpe_context == NULL) ||
+ (src_rect == NULL) || (src_surface == NULL) ||
+ (dst_rect == NULL) || (dst_surface == NULL))
+ return;
+
+ if (src_surface->base == NULL || dst_surface->base == NULL)
+ return;
+
+ fourcc = pp_get_surface_fourcc(ctx, src_surface);
+
+ if (src_surface->type == I965_SURFACE_TYPE_SURFACE) {
+ obj_surface = (struct object_surface *)src_surface->base;
+ bo = obj_surface->bo;
+ } else {
+ obj_image = (struct object_image *)src_surface->base;
+ bo = obj_image->bo;
+ }
+
+ bti = 0;
+ if (gen9_pp_context_get_surface_conf(ctx, src_surface, src_rect,
+ width, height, pitch,
+ bo_offset)) {
+ bti = BTI_SCALING_INPUT_Y;
+ /* Input surface */
+ gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+ bo_offset[0],
+ width[0], height[0],
+ pitch[0], 0,
+ I965_SURFACEFORMAT_R16_UNORM,
+ bti, 1);
+ if (fourcc == VA_FOURCC_P010) {
+ gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+ bo_offset[1],
+ width[1], height[1],
+ pitch[1], 0,
+ I965_SURFACEFORMAT_R16G16_UNORM,
+ bti + 1, 1);
+ } else {
+ gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+ bo_offset[1],
+ width[1], height[1],
+ pitch[1], 0,
+ I965_SURFACEFORMAT_R16_UNORM,
+ bti + 1, 1);
+
+ gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+ bo_offset[2],
+ width[2], height[2],
+ pitch[2], 0,
+ I965_SURFACEFORMAT_R16_UNORM,
+ bti + 2, 1);
+ }
+ }
+
+ fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+
+ if (dst_surface->type == I965_SURFACE_TYPE_SURFACE) {
+ obj_surface = (struct object_surface *)dst_surface->base;
+ bo = obj_surface->bo;
+ } else {
+ obj_image = (struct object_image *)dst_surface->base;
+ bo = obj_image->bo;
+ }
+
+ if (gen9_pp_context_get_surface_conf(ctx, dst_surface, dst_rect,
+ width, height, pitch,
+ bo_offset)) {
+ bti = BTI_SCALING_OUTPUT_Y;
+ /* Input surface */
+ gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+ bo_offset[0],
+ width[0], height[0],
+ pitch[0], 1,
+ I965_SURFACEFORMAT_R16_UINT,
+ bti, 1);
+ if (fourcc == VA_FOURCC_P010) {
+ gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+ bo_offset[1],
+ width[1] * 2, height[1],
+ pitch[1], 1,
+ I965_SURFACEFORMAT_R16_UINT,
+ bti + 1, 1);
+ } else {
+ gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+ bo_offset[1],
+ width[1], height[1],
+ pitch[1], 1,
+ I965_SURFACEFORMAT_R16_UINT,
+ bti + 1, 1);
+
+ gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+ bo_offset[2],
+ width[2], height[2],
+ pitch[2], 1,
+ I965_SURFACEFORMAT_R16_UINT,
+ bti + 2, 1);
+ }
+ }
+
+ return;
+}
+
+VAStatus
+gen9_p010_scaling_post_processing(
+ VADriverContextP ctx,
+ struct i965_post_processing_context *pp_context,
+ struct i965_surface *src_surface,
+ VARectangle *src_rect,
+ struct i965_surface *dst_surface,
+ VARectangle *dst_rect)
+{
+ struct i965_gpe_context *gpe_context;
+ struct gpe_media_object_walker_parameter media_object_walker_param;
+ struct intel_vpp_kernel_walker_parameter kernel_walker_param;
+
+ if (!pp_context || !src_surface || !src_rect || !dst_surface || !dst_rect)
+ return VA_STATUS_ERROR_INVALID_PARAMETER;
+
+ if (!pp_context->scaling_context_initialized)
+ return VA_STATUS_ERROR_UNIMPLEMENTED;
+
+ gpe_context = &pp_context->scaling_10bit_context;
+
+ gen8_gpe_context_init(ctx, gpe_context);
+ gen9_p010_scaling_sample_state(ctx, gpe_context, src_rect, dst_rect);
+ gen9_gpe_reset_binding_table(ctx, gpe_context);
+ gen9_gpe_context_p010_scaling_curbe(ctx, gpe_context,
+ src_rect, src_surface,
+ dst_rect, dst_surface);
+
+ gen9_gpe_context_p010_scaling_surfaces(ctx, gpe_context,
+ src_rect, src_surface,
+ dst_rect, dst_surface);
+
+ gen8_gpe_setup_interface_data(ctx, gpe_context);
+
+ memset(&kernel_walker_param, 0, sizeof(kernel_walker_param));
+ kernel_walker_param.resolution_x = ALIGN(dst_rect->width, 16) >> 4;
+ kernel_walker_param.resolution_y = ALIGN(dst_rect->height, 16) >> 4;
+ kernel_walker_param.no_dependency = 1;
+
+ intel_vpp_init_media_object_walker_parameter(&kernel_walker_param, &media_object_walker_param);
+
+ gen9_run_kernel_media_object_walker(ctx, pp_context->batch,
+ gpe_context,
+ &media_object_walker_param);
+
+ return VA_STATUS_SUCCESS;
}
diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index 7f2146e..1e3d6cd 100644
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -48,6 +48,8 @@
#include "i965_decoder.h"
#include "i965_encoder.h"

+#include "i965_post_processing.h"
+
#include "gen9_vp9_encapi.h"

#define CONFIG_ID_OFFSET 0x01000000
diff --git a/src/i965_encoder.c b/src/i965_encoder.c
index 8587fd5..4ef92eb 100644
--- a/src/i965_encoder.c
+++ b/src/i965_encoder.c
@@ -40,6 +40,8 @@
#include "gen6_vme.h"
#include "gen6_mfc.h"

+#include "i965_post_processing.h"
+
static VAStatus
clear_border(struct object_surface *obj_surface)
{
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index 30529e1..95dc9c3 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1856,7 +1856,35 @@ gen9_gpe_context_add_surface(struct i965_gpe_context *gpe_context,
buf = (char *)gpe_context->surface_state_binding_table.bo->virtual;
*((unsigned int *)(buf + binding_table_offset)) = surface_state_offset;

- if (gpe_surface->is_2d_surface && gpe_surface->is_uv_surface) {
+ if (gpe_surface->is_2d_surface && gpe_surface->is_override_offset) {
+ struct gen9_surface_state *ss = (struct gen9_surface_state *)(buf + surface_state_offset);
+
+ width = gpe_resource->width;
+ height = gpe_resource->height;
+ pitch = gpe_resource->pitch;
+
+ if (gpe_surface->is_media_block_rw) {
+ if (gpe_surface->is_10bit)
+ width = (ALIGN(width * 2, 4) >> 2);
+ else
+ width = (ALIGN(width, 4) >> 2);
+ }
+
+
+ gen9_gpe_set_2d_surface_state(ss,
+ gpe_surface->cacheability_control,
+ gpe_surface->format,
+ tiling,
+ width, height, pitch,
+ gpe_resource->bo->offset64 + gpe_surface->offset,
+ 0);
+
+ dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo,
+ I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
+ gpe_surface->offset,
+ surface_state_offset + offsetof(struct gen9_surface_state, ss8),
+ gpe_resource->bo);
+ } else if (gpe_surface->is_2d_surface && gpe_surface->is_uv_surface) {
unsigned int cbcr_offset;
struct gen9_surface_state *ss = (struct gen9_surface_state *)(buf + surface_state_offset);

diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
index 383fcdf..e3ffbae 100644
--- a/src/i965_gpe_utils.h
+++ b/src/i965_gpe_utils.h
@@ -418,6 +418,8 @@ struct i965_gpe_surface
unsigned int is_media_block_rw:1;
unsigned int is_raw_buffer:1;
unsigned int is_10bit :1;
+ /* use the override_offset for 2d_surface */
+ unsigned int is_override_offset : 1;

unsigned int vert_line_stride_offset;
unsigned int vert_line_stride;
@@ -425,7 +427,7 @@ struct i965_gpe_surface
unsigned int format; // 2d surface only
unsigned int v_direction; // adv surface only
unsigned int size; // buffer only
- unsigned int offset; // buffer only
+ unsigned int offset;

struct i965_gpe_resource *gpe_resource;
};
diff --git a/src/i965_post_processing.h b/src/i965_post_processing.h
index a9942b2..e55bf0b 100755
--- a/src/i965_post_processing.h
+++ b/src/i965_post_processing.h
@@ -30,9 +30,15 @@
#define __I965_POST_PROCESSING_H__

#include "i965_vpp_avs.h"
+#include <drm.h>
+#include <i915_drm.h>
+#include <intel_bufmgr.h>
+#include "i965_gpe_utils.h"

#define MAX_PP_SURFACES 48

+struct i965_gpe_context;
+
enum
{
PP_NULL = 0,
@@ -590,6 +596,10 @@ struct i965_post_processing_context
void * filter_param);
void (*finalize)(VADriverContextP ctx,
struct i965_post_processing_context *pp_context);
+
+
+ struct i965_gpe_context scaling_10bit_context;
+ int scaling_context_initialized;
};

struct i965_proc_context
diff --git a/src/i965_render.h b/src/i965_render.h
index 2114cad..227a15b 100644
--- a/src/i965_render.h
+++ b/src/i965_render.h
@@ -35,7 +35,6 @@

#define VA_SRC_COLOR_MASK 0x000000f0

-#include "i965_post_processing.h"

struct i965_kernel;

diff --git a/src/shaders/post_processing/gen9/conv_p010.g9b b/src/shaders/post_processing/gen9/conv_p010.g9b
new file mode 100644
index 0000000..536a46c
--- /dev/null
+++ b/src/shaders/post_processing/gen9/conv_p010.g9b
@@ -0,0 +1,783 @@
+{ 0x00600001, 0x20602648, 0x00000000, 0x76543210 },
+{ 0x00000005, 0x2380124c, 0x16000004, 0x07ff07ff },
+{ 0x00600001, 0x23a01208, 0x008d0060, 0x00000000 },
+{ 0x00000005, 0x2382124c, 0x16000006, 0x07ff07ff },
+{ 0x00000041, 0x20a01208, 0x16000380, 0x00100010 },
+{ 0x00600040, 0x23c00208, 0x168d03a0, 0x00080008 },
+{ 0x00000041, 0x20801228, 0x16000382, 0x00100010 },
+{ 0x00000040, 0x20c00208, 0x02000040, 0x000000a0 },
+{ 0x00800040, 0x23a00208, 0x028d03a0, 0x000000a0 },
+{ 0x00800001, 0x212002e8, 0x00000080, 0x00000000 },
+{ 0x00800001, 0x20e002e8, 0x008d03a0, 0x00000000 },
+{ 0x00000001, 0x21603ee8, 0x00000000, 0x3f000000 },
+{ 0x0080015b, 0x211e0000, 0xc0202a01, 0x02472004 },
+{ 0x0080015b, 0x1f1e0000, 0x80202801, 0x01c72004 },
+{ 0x0080015b, 0x211e0000, 0x802211c8, 0x02c00403 },
+{ 0x0080015b, 0x1f1e0000, 0x4021f1c8, 0x02c00403 },
+{ 0x00000001, 0x238c1e28, 0x00000000, 0x00000000 },
+{ 0x00000001, 0x25c80208, 0x0000005c, 0x00000000 },
+{ 0x00000009, 0x23840228, 0x160000c0, 0x00010001 },
+{ 0x00000040, 0x23880228, 0x02000044, 0x00000080 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
+{ 0x02800031, 0x24600268, 0x00000060, 0x00000200 },
+{ 0x00000001, 0x23900ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000390 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x23941ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000394 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x24603ae8, 0x3e8d0460, 0x3c800000 },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x0000004c },
+{ 0x00600001, 0x20a00208, 0x008d0000, 0x00000000 },
+{ 0x00800001, 0x21800608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21401ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x20603a28, 0x008d0460, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
+{ 0x00800001, 0x21000208, 0x008d0420, 0x00000000 },
+{ 0x00000001, 0x20a80608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x02800031, 0x24600268, 0x000000a0, 0x00000200 },
+{ 0x00000001, 0x23900ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000390 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x23941ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000394 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x24603ae8, 0x3e8d0460, 0x3c800000 },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x0000004c },
+{ 0x00600001, 0x20a00208, 0x008d0000, 0x00000000 },
+{ 0x00800001, 0x21800608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21401ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x20603a28, 0x008d0460, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
+{ 0x00800001, 0x21000208, 0x008d0420, 0x00000000 },
+{ 0x00000001, 0x20a80608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x24c01248, 0x00400060, 0x00000000 },
+{ 0x02800031, 0x24600268, 0x000000a0, 0x00000200 },
+{ 0x00000001, 0x23900ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000390 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x23941ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000394 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x24603ae8, 0x3e8d0460, 0x3c800000 },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x0000004c },
+{ 0x00600001, 0x20a00208, 0x008d0000, 0x00000000 },
+{ 0x00800001, 0x21800608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21401ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x20603a28, 0x008d0460, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
+{ 0x00800001, 0x21000208, 0x008d0420, 0x00000000 },
+{ 0x00000001, 0x20a80608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x24e01248, 0x00400060, 0x00000000 },
+{ 0x02800031, 0x24600268, 0x000000a0, 0x00000200 },
+{ 0x00000001, 0x23900ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000390 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x23941ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000394 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x24603ae8, 0x3e8d0460, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0460, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x238c0a28, 0x1e00038c, 0x00010001 },
+{ 0x00000040, 0x22000204, 0x060005c8, 0x020a8000 },
+{ 0x00800001, 0x25001248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0003001f },
+{ 0x05000010, 0x20000a20, 0x1e00038c, 0x00040004 },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x0000004c },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00040004 },
+{ 0x0c600033, 0x00025014, 0x000020a4, 0x00000000 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0xfffffa60 },
+{ 0x00600001, 0x20602668, 0x00000000, 0x76543210 },
+{ 0x00000041, 0x20a01228, 0x16000382, 0x00100010 },
+{ 0x00600009, 0x23c01a08, 0x168d0060, 0x00010001 },
+{ 0x00000041, 0x20801208, 0x16000380, 0x00100010 },
+{ 0x00600001, 0x20c00a08, 0x000000a0, 0x00000000 },
+{ 0x00600001, 0x23a00208, 0x008d03c0, 0x00000000 },
+{ 0x00600040, 0x20e00208, 0x168d00c0, 0x00020002 },
+{ 0x00800040, 0x23a00208, 0x028d03a0, 0x00000080 },
+{ 0x00800001, 0x218002e8, 0x008d00c0, 0x00000000 },
+{ 0x00800001, 0x214002e8, 0x008d03a0, 0x00000000 },
+{ 0x00000005, 0x21c00208, 0x1600003c, 0x000c000c },
+{ 0x0080015b, 0x211e0000, 0xc0202a01, 0x03072004 },
+{ 0x0080015b, 0x1f1e0000, 0x80202801, 0x02872004 },
+{ 0x00000040, 0x21200228, 0x02000044, 0x000000a0 },
+{ 0x00000040, 0x21000208, 0x02000040, 0x00000080 },
+{ 0x02000010, 0x20000200, 0x160001c0, 0x000c000c },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x00000038 },
+{ 0x00800040, 0x23e03ae8, 0x3a8d03e0, 0x00000034 },
+{ 0x00000040, 0x23980208, 0x16000058, 0x00010001 },
+{ 0x00000040, 0x239c0208, 0x16000058, 0x00020002 },
+{ 0x00000040, 0x25200208, 0x1600005c, 0x00010001 },
+{ 0x00000040, 0x25240208, 0x1600005c, 0x00020002 },
+{ 0x0000000c, 0x23880a28, 0x1e000120, 0x00010001 },
+{ 0x00000009, 0x23840228, 0x16000100, 0x00010001 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x000009a0 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
+{ 0x02800031, 0x25400268, 0x00000060, 0x00000200 },
+{ 0x00000001, 0x25280ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000528 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000528 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x252c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000052c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000052c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00600001, 0x20e03a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20a03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20803a28, 0x008d0560, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x2120020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x41000a48, 0x008d00e0, 0x00000000 },
+{ 0x00600001, 0x40c00a48, 0x008d00a0, 0x00000000 },
+{ 0x00600001, 0x44c00a48, 0x008d0080, 0x00000000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00000001, 0x2124020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x2120020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2128060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x00400100, 0x00000000 },
+{ 0x00600001, 0x44a21248, 0x004000c0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x00002122, 0x00000000 },
+{ 0x00000001, 0x21403ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21600208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980414 },
+{ 0x00800001, 0x22400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21680608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21c00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000160, 0x00000200 },
+{ 0x00000001, 0x25280ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000528 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000528 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x252c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000052c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000052c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00600001, 0x20e03a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20a03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20803a28, 0x008d0560, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x2120020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x41000a48, 0x008d00e0, 0x00000000 },
+{ 0x00600001, 0x40c00a48, 0x008d00a0, 0x00000000 },
+{ 0x00600001, 0x44c00a48, 0x008d0080, 0x00000000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00000001, 0x2124020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x2120020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2128060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x00400100, 0x00000000 },
+{ 0x00600001, 0x44a21248, 0x004000c0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x00002122, 0x00000000 },
+{ 0x00000001, 0x21403ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21600208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980414 },
+{ 0x00800001, 0x22400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21680608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21c00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000160, 0x00000200 },
+{ 0x00000001, 0x25280ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000528 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000528 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x252c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000052c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000052c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00600001, 0x20e03a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20a03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20803a28, 0x008d0560, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x2120020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x41000a48, 0x008d00e0, 0x00000000 },
+{ 0x00600001, 0x40c00a48, 0x008d00a0, 0x00000000 },
+{ 0x00600001, 0x44c00a48, 0x008d0080, 0x00000000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00000001, 0x2124020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x2120020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2128060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x00400100, 0x00000000 },
+{ 0x00600001, 0x44a21248, 0x004000c0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x00002122, 0x00000000 },
+{ 0x00000001, 0x21403ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21600208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980414 },
+{ 0x00800001, 0x22400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21680608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21c00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000160, 0x00000200 },
+{ 0x00000001, 0x25280ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000528 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000528 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x252c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000052c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000052c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00600001, 0x20e03a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20a03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20803a28, 0x008d0560, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x2120020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x41000a48, 0x008d00e0, 0x00000000 },
+{ 0x00600001, 0x40c00a48, 0x008d00a0, 0x00000000 },
+{ 0x00600001, 0x44c00a48, 0x008d0080, 0x00000000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00000001, 0x2124020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x2120020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2128060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x00400100, 0x00000000 },
+{ 0x00600001, 0x44a21248, 0x004000c0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x00002122, 0x00000000 },
+{ 0x00000020, 0x34000004, 0x0e001400, 0x00001ec0 },
+{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
+{ 0x02000010, 0x20000200, 0x16000060, 0x00080008 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000960 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
+{ 0x02800031, 0x25400268, 0x00000060, 0x00000200 },
+{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x21a00208, 0x008d03e0, 0x00000000 },
+{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000180, 0x00000200 },
+{ 0x00000001, 0x25300ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000530 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x25341ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000534 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00600001, 0x20803a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20c0020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x40a00a48, 0x008d0080, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000001, 0x20c4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20c0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20c8060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x004000a0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x000020c2, 0x00000000 },
+{ 0x00000001, 0x20e03ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21000208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x0098040e },
+{ 0x00800001, 0x21e00608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21a01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21200208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21080608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21600208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22200208, 0x008d0100, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000100, 0x00000200 },
+{ 0x00800001, 0x23000608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22c01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22400208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d0160, 0x00000000 },
+{ 0x00000001, 0x25300ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000220, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000530 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x25341ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000534 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00600001, 0x20803a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20c0020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x40a00a48, 0x008d0080, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000001, 0x20c4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20c0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20c8060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x004000a0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x000020c2, 0x00000000 },
+{ 0x00000001, 0x20e03ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21000208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x0098040e },
+{ 0x00800001, 0x21e00608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21a01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21200208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21080608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21600208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22200208, 0x008d0100, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000100, 0x00000200 },
+{ 0x00800001, 0x23000608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22c01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22400208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d0160, 0x00000000 },
+{ 0x00000001, 0x25300ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000220, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000530 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x25341ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000534 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00600001, 0x20803a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20c0020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x40a00a48, 0x008d0080, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000001, 0x20c4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20c0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20c8060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x004000a0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x000020c2, 0x00000000 },
+{ 0x00000001, 0x20e03ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21000208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x0098040e },
+{ 0x00800001, 0x21e00608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21a01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21200208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21080608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21600208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22200208, 0x008d0100, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000100, 0x00000200 },
+{ 0x00800001, 0x23000608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22c01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22400208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d0160, 0x00000000 },
+{ 0x00000001, 0x25300ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000220, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000530 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x25341ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000534 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00600001, 0x20803a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20c0020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x40a00a48, 0x008d0080, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000001, 0x20c4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20c0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20c8060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x004000a0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x000020c2, 0x00000000 },
+{ 0x00000020, 0x34000004, 0x0e001400, 0x00001530 },
+{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
+{ 0x02000010, 0x20000200, 0x16000060, 0x00040004 },
+{ 0x0000000c, 0x23840a28, 0x1e000384, 0x00010001 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x000009a0 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
+{ 0x02800031, 0x25400268, 0x00000060, 0x00000200 },
+{ 0x00000001, 0x25380ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000538 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000538 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x253c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000053c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000053c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00000001, 0x25380ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000538 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000538 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x253c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000053c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000053c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00000001, 0x25380ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000538 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000538 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x253c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000053c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000053c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00000001, 0x25380ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000538 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000538 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x253c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000053c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000053c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000020, 0x34000004, 0x0e001400, 0x00000b50 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
+{ 0x02800031, 0x25400268, 0x00000060, 0x00000200 },
+{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x21a00208, 0x008d03e0, 0x00000000 },
+{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000180, 0x00000200 },
+{ 0x00000001, 0x25c00ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c0 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c0 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x25c41ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c4 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c4 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22600208, 0x008d0140, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00800001, 0x23400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x23001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22c00208, 0x008d01a0, 0x00000000 },
+{ 0x00000001, 0x25c00ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000260, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c0 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c0 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x25c41ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c4 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c4 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22600208, 0x008d0140, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00800001, 0x23400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x23001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22c00208, 0x008d01a0, 0x00000000 },
+{ 0x00000001, 0x25c00ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000260, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c0 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c0 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x25c41ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c4 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c4 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22600208, 0x008d0140, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00800001, 0x23400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x23001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22c00208, 0x008d01a0, 0x00000000 },
+{ 0x00000001, 0x25c00ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000260, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c0 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c0 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x25c41ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c4 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c4 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00600001, 0x2fe0020c, 0x008d0000, 0x00000000 },
+{ 0x07000031, 0x20000200, 0x06000fe0, 0x82000010 },
--
2.8.3
Xiang, Haihao
2016-11-11 07:32:11 UTC
Permalink
LGTM.
---
 src/gen75_vpp_vebox.c                          |   2 +
 src/gen75_vpp_vebox.h                          |   1 -
 src/gen8_post_processing.c                     |   5 +
 src/gen8_post_processing.h                     |   9 +
 src/gen9_post_processing.c                     | 487 +++++++++++++++
 src/i965_drv_video.c                           |   2 +
 src/i965_encoder.c                             |   2 +
 src/i965_gpe_utils.c                           |  30 +-
 src/i965_gpe_utils.h                           |   4 +-
 src/i965_post_processing.h                     |  10 +
 src/i965_render.h                              |   1 -
 src/shaders/post_processing/gen9/conv_p010.g9b | 783
+++++++++++++++++++++++++
 12 files changed, 1332 insertions(+), 4 deletions(-)
 create mode 100644 src/shaders/post_processing/gen9/conv_p010.g9b
diff --git a/src/gen75_vpp_vebox.c b/src/gen75_vpp_vebox.c
index a71f905..0c52765 100644
--- a/src/gen75_vpp_vebox.c
+++ b/src/gen75_vpp_vebox.c
@@ -39,6 +39,8 @@
 #include "gen75_vpp_vebox.h"
 #include "intel_media.h"
 
+#include "i965_post_processing.h"
+
 #define PI  3.1415926
 
 extern VAStatus
diff --git a/src/gen75_vpp_vebox.h b/src/gen75_vpp_vebox.h
index 740c383..d1fb32d 100644
--- a/src/gen75_vpp_vebox.h
+++ b/src/gen75_vpp_vebox.h
@@ -36,7 +36,6 @@
 #include <va/va_vpp.h>
 #include "i965_drv_video.h"
 
-#include "i965_post_processing.h"
 #include "gen75_vpp_gpe.h"
 
 #define INPUT_SURFACE  0
diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
index 687cedc..708918b 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -1539,6 +1539,11 @@ static void
 gen8_post_processing_context_finalize(VADriverContextP ctx,
     struct i965_post_processing_context *pp_context)
 {
+    if (pp_context->scaling_context_initialized) {
+        gen8_gpe_context_destroy(&pp_context-
Post by Zhao Yakui
scaling_10bit_context);
+        pp_context->scaling_context_initialized = 0;
+    }
+
     if(pp_context->vebox_proc_ctx){
        gen75_vebox_context_destroy(ctx,pp_context->vebox_proc_ctx);
        pp_context->vebox_proc_ctx = NULL;
diff --git a/src/gen8_post_processing.h b/src/gen8_post_processing.h
index f3c09a8..bd0601a 100644
--- a/src/gen8_post_processing.h
+++ b/src/gen8_post_processing.h
@@ -85,4 +85,13 @@
gen8_post_processing_context_common_init(VADriverContextP ctx,
                                          struct pp_module
*pp_modules,
                                          int num_pp_modules,
                                          struct intel_batchbuffer
*batch);
+extern VAStatus
+gen9_p010_scaling_post_processing(
+    VADriverContextP   ctx,
+    struct i965_post_processing_context *pp_context,
+    struct i965_surface *src_surface,
+    VARectangle *src_rect,
+    struct i965_surface *dst_surface,
+    VARectangle *dst_rect);
+
 #endif
diff --git a/src/gen9_post_processing.c b/src/gen9_post_processing.c
index 46a156f..a4d212b 100644
--- a/src/gen9_post_processing.c
+++ b/src/gen9_post_processing.c
@@ -103,6 +103,46 @@ static const uint32_t
pp_nv12_load_save_rgbx_gen9[][4] = {
 static const uint32_t pp_nv12_blending_gen9[][4] = {
 };
 
+#define MAX_SCALING_SURFACES    16
+
+#define DEFAULT_MOCS    0x02
+#define SRC_MSB         0x0001
+#define DST_MSB         0x0002
+#define SRC_PACKED      0x0004
+#define DST_PACKED      0x0008
+#define PACKED_MASK     0x000C
+
+#define BTI_SCALING_INPUT_Y     0
+#define BTI_SCALING_OUTPUT_Y    8
+
+struct scaling_input_parameter {
+    unsigned int input_data[5];
+
+    float inv_width;
+    float inv_height;
+
+    struct {
+        unsigned int src_msb : 1;
+        unsigned int dst_msb : 1;
+        unsigned int src_packed : 1;
+        unsigned int dst_packed : 1;
+        unsigned int reserved : 28;
+    } dw7;
+
+    int x_dst;
+    int y_dst;
+    float    x_factor; // src_rect_width / dst_rect_width /
Surface_width
+    float    y_factor; // src_rect_height / dst_rect_height /
Surface_height
+    float    x_orig;
+    float    y_orig;
+    unsigned int bti_input;
+    unsigned int bti_output;
+};
+
+static const uint32_t pp_10bit_scaling_gen9[][4] = {
+#include "shaders/post_processing/gen9/conv_p010.g9b"
+};
+
 static struct pp_module pp_modules_gen9[] = {
     {
         {
@@ -438,15 +478,462 @@ gen9_post_processing(VADriverContextP ctx,
     return va_status;
 }
 
+static void
+gen9_p010_scaling_sample_state(VADriverContextP ctx,
+                               struct i965_gpe_context *gpe_context,
+                               VARectangle *src_rect,
+                               VARectangle *dst_rect)
+{
+    struct gen8_sampler_state *sampler_state;
+
+    if (gpe_context == NULL || !src_rect || !dst_rect)
+        return;
+    dri_bo_map(gpe_context->dynamic_state.bo, 1);
+
+    if (gpe_context->dynamic_state.bo->virtual == NULL)
+        return;
+
+    assert(gpe_context->dynamic_state.bo->virtual);
+
+    sampler_state = (struct gen8_sampler_state *)
+       (gpe_context->dynamic_state.bo->virtual + gpe_context-
Post by Zhao Yakui
sampler_offset);
+
+    memset(sampler_state, 0, sizeof(*sampler_state));
+
+    if ((src_rect->width == dst_rect->width) &&
+        (src_rect->height == dst_rect->height)) {
+        sampler_state->ss0.min_filter = I965_MAPFILTER_NEAREST;
+        sampler_state->ss0.mag_filter = I965_MAPFILTER_NEAREST;
+    } else {
+        sampler_state->ss0.min_filter = I965_MAPFILTER_LINEAR;
+        sampler_state->ss0.mag_filter = I965_MAPFILTER_LINEAR;
+    }
+
+    sampler_state->ss3.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+    sampler_state->ss3.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+    sampler_state->ss3.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+
+    dri_bo_unmap(gpe_context->dynamic_state.bo);
+}
+
 void
 gen9_post_processing_context_init(VADriverContextP ctx,
                                   void *data,
                                   struct intel_batchbuffer *batch)
 {
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
     struct i965_post_processing_context *pp_context = data;
+    struct i965_gpe_context *gpe_context;
+    struct i965_kernel scaling_kernel;
 
     gen8_post_processing_context_common_init(ctx, data,
pp_modules_gen9, ARRAY_ELEMS(pp_modules_gen9), batch);
     avs_init_state(&pp_context->pp_avs_context.state,
&gen9_avs_config);
 
     pp_context->intel_post_processing = gen9_post_processing;
+
+    gpe_context = &pp_context->scaling_10bit_context;
+    memset(&scaling_kernel, 0, sizeof(scaling_kernel));
+    scaling_kernel.bin = pp_10bit_scaling_gen9;
+    scaling_kernel.size = sizeof(pp_10bit_scaling_gen9);
+    gen8_gpe_load_kernels(ctx, gpe_context, &scaling_kernel, 1);
+    gpe_context->idrt_size = ALIGN(sizeof(struct
gen8_interface_descriptor_data), 64);
+    gpe_context->sampler_size = ALIGN(sizeof(struct
gen8_sampler_state), 64);
+    gpe_context->curbe_size = ALIGN(sizeof(struct
scaling_input_parameter), 64);
+    gpe_context->curbe.length = gpe_context->curbe_size;
+
+    gpe_context->surface_state_binding_table.max_entries =
MAX_SCALING_SURFACES;
+    gpe_context->surface_state_binding_table.binding_table_offset =
0;
+    gpe_context->surface_state_binding_table.surface_state_offset =
ALIGN(MAX_SCALING_SURFACES * 4, 64);
+    gpe_context->surface_state_binding_table.length =
ALIGN(MAX_SCALING_SURFACES * 4, 64) + ALIGN(MAX_SCALING_SURFACES *
SURFACE_STATE_PADDED_SIZE_GEN9, 64);
+
+    if (i965->intel.has_bsd2)
+        gpe_context->vfe_state.max_num_threads = 300;
+    else
+        gpe_context->vfe_state.max_num_threads = 60;
+
+    gpe_context->vfe_state.curbe_allocation_size = 37;
+    gpe_context->vfe_state.urb_entry_size = 16;
+    gpe_context->vfe_state.num_urb_entries = 127;
+    gpe_context->vfe_state.gpgpu_mode = 0;
+
+    gen8_gpe_context_init(ctx, gpe_context);
+    pp_context->scaling_context_initialized = 1;
+    return;
+}
+
+static void
+gen9_add_dri_buffer_2d_gpe_surface(VADriverContextP ctx,
+                                   struct i965_gpe_context
*gpe_context,
+                                   dri_bo *bo,
+                                   unsigned int bo_offset,
+                                   unsigned int width,
+                                   unsigned int height,
+                                   unsigned int pitch,
+                                   int is_media_block_rw,
+                                   unsigned int format,
+                                   int index,
+                                   int is_10bit)
+{
+    struct i965_gpe_resource gpe_resource;
+    struct i965_gpe_surface gpe_surface;
+
+    i965_gpe_dri_object_to_2d_gpe_resource(&gpe_resource, bo, width,
height, pitch);
+    memset(&gpe_surface, 0, sizeof(gpe_surface));
+    gpe_surface.gpe_resource = &gpe_resource;
+    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;
+    gpe_surface.is_override_offset = 1;
+    gpe_surface.offset = bo_offset;
+    gpe_surface.is_10bit = is_10bit;
+
+    gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index);
+
+    i965_free_gpe_resource(&gpe_resource);
+}
+
+static void
+gen9_run_kernel_media_object_walker(VADriverContextP ctx,
+                                    struct intel_batchbuffer *batch,
+                                    struct i965_gpe_context
*gpe_context,
+                                    struct
gpe_media_object_walker_parameter *param)
+{
+    if (!batch || !gpe_context || !param)
+        return;
+
+    intel_batchbuffer_start_atomic(batch, 0x1000);
+
+    intel_batchbuffer_emit_mi_flush(batch);
+
+    gen9_gpe_pipeline_setup(ctx, gpe_context, batch);
+    gen9_gpe_media_object_walker(ctx, gpe_context, batch, param);
+    gen8_gpe_media_state_flush(ctx, gpe_context, batch);
+
+    gen9_gpe_pipeline_end(ctx, gpe_context, batch);
+
+    intel_batchbuffer_end_atomic(batch);
+
+    intel_batchbuffer_flush(batch);
+    return;
+}
+
+static unsigned int
+pp_get_surface_fourcc(VADriverContextP ctx, struct i965_surface *surface)
+{
+    unsigned int fourcc;
+
+    if (surface->type == I965_SURFACE_TYPE_IMAGE) {
+        struct object_image *obj_image = (struct object_image
*)surface->base;
+        fourcc = obj_image->image.format.fourcc;
+    } else {
+        struct object_surface *obj_surface = (struct object_surface
*)surface->base;
+        fourcc = obj_surface->fourcc;
+    }
+
+    return fourcc;
+}
+
+static void
+gen9_gpe_context_p010_scaling_curbe(VADriverContextP ctx,
+                               struct i965_gpe_context *gpe_context,
+                               VARectangle *src_rect,
+                               struct i965_surface *src_surface,
+                               VARectangle *dst_rect,
+                               struct i965_surface *dst_surface)
+{
+    struct scaling_input_parameter *scaling_curbe;
+    float src_width, src_height;
+    float coeff;
+    unsigned int fourcc;
+
+    if ((gpe_context == NULL) ||
+        (src_rect == NULL) || (src_surface == NULL) ||
+        (dst_rect == NULL) || (dst_surface == NULL))
+        return;
+
+    scaling_curbe = gen8p_gpe_context_map_curbe(gpe_context);
+
+    if (!scaling_curbe)
+        return;
+
+    memset(scaling_curbe, 0, sizeof(struct
scaling_input_parameter));
+
+    scaling_curbe->bti_input = BTI_SCALING_INPUT_Y;
+    scaling_curbe->bti_output = BTI_SCALING_OUTPUT_Y;
+
+    /* As the src_rect/dst_rect is already checked, it is skipped.*/
+    scaling_curbe->x_dst     = dst_rect->x;
+    scaling_curbe->y_dst     = dst_rect->y;
+
+    src_width = src_rect->x + src_rect->width;
+    src_height = src_rect->y + src_rect->height;
+
+    scaling_curbe->inv_width = 1 / src_width;
+    scaling_curbe->inv_height = 1 / src_height;
+
+    coeff = (float) (src_rect->width) / dst_rect->width;
+    scaling_curbe->x_factor = coeff / src_width;
+    scaling_curbe->x_orig = (float)(src_rect->x) / src_width;
+
+    coeff = (float) (src_rect->height) / dst_rect->height;
+    scaling_curbe->y_factor = coeff / src_height;
+    scaling_curbe->y_orig = (float)(src_rect->y) / src_height;
+
+    fourcc = pp_get_surface_fourcc(ctx, src_surface);
+    if (fourcc == VA_FOURCC_P010) {
+        scaling_curbe->dw7.src_packed = 1;
+        scaling_curbe->dw7.src_msb = 1;
+    }
+    /* I010 will use LSB */
+
+    fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+
+    if (fourcc == VA_FOURCC_P010) {
+        scaling_curbe->dw7.dst_packed = 1;
+        scaling_curbe->dw7.dst_msb = 1;
+    }
+    /* I010 will use LSB */
+
+    gen8p_gpe_context_unmap_curbe(gpe_context);
+}
+
+static bool
+gen9_pp_context_get_surface_conf(VADriverContextP ctx,
+                                 struct i965_surface *surface,
+                                 VARectangle *rect,
+                                 int *width,
+                                 int *height,
+                                 int *pitch,
+                                 int *bo_offset)
+{
+    unsigned int fourcc;
+    if (!rect || !surface || !width || !height || !pitch ||
!bo_offset)
+        return false;
+
+    if (surface->base == NULL)
+        return false;
+
+    fourcc = pp_get_surface_fourcc(ctx, surface);
+    if (surface->type == I965_SURFACE_TYPE_SURFACE) {
+        struct object_surface *obj_surface;
+
+        obj_surface = (struct object_surface *)surface->base;
+        width[0] = MIN(rect->x + rect->width, obj_surface-
Post by Zhao Yakui
orig_width);
+        height[0] = MIN(rect->y + rect->height, obj_surface-
Post by Zhao Yakui
orig_height);
+        pitch[0] = obj_surface->width;
+        bo_offset[0] = 0;
+
+        if (fourcc == VA_FOURCC_P010) {
+            width[1] = width[0] / 2;
+            height[1] = height[0] / 2;
+            pitch[1] = obj_surface->cb_cr_pitch;
+            bo_offset[1] = obj_surface->width * obj_surface-
Post by Zhao Yakui
y_cb_offset;
+        } else {
+            /* I010 format */
+            width[1] = width[0] / 2;
+            height[1] = height[0] / 2;
+            pitch[1] = obj_surface->cb_cr_pitch;
+            bo_offset[1] = obj_surface->width * obj_surface-
Post by Zhao Yakui
y_cb_offset;
+            width[2] = width[0] / 2;
+            height[2] = height[0] / 2;
+            pitch[2] = obj_surface->cb_cr_pitch;
+            bo_offset[2] = obj_surface->width * obj_surface-
Post by Zhao Yakui
y_cr_offset;
+        }
+
+    } else {
+        struct object_image *obj_image;
+
+        obj_image = (struct object_image *)surface->base;
+
+        width[0] = MIN(rect->x + rect->width, obj_image-
Post by Zhao Yakui
image.width);
+        height[0] = MIN(rect->y + rect->height, obj_image-
Post by Zhao Yakui
image.height);
+        pitch[0] = obj_image->image.pitches[0];
+        bo_offset[0] = obj_image->image.offsets[0];
+
+        if (fourcc == VA_FOURCC_P010) {
+            width[1] = width[0] / 2;
+            height[1] = height[0] / 2;
+            pitch[1] = obj_image->image.pitches[1];
+            bo_offset[1] = obj_image->image.offsets[1];
+        } else {
+            /* I010 format */
+            width[1] = width[0] / 2;
+            height[1] = height[0] / 2;
+            pitch[1] = obj_image->image.pitches[1];
+            bo_offset[1] = obj_image->image.offsets[1];
+            width[2] = width[0] / 2;
+            height[2] = height[0] / 2;
+            pitch[2] = obj_image->image.pitches[2];
+            bo_offset[2] = obj_image->image.offsets[2];
+        }
+
+    }
+
+    return true;
+}
+
+static void
+gen9_gpe_context_p010_scaling_surfaces(VADriverContextP ctx,
+                               struct i965_gpe_context *gpe_context,
+                               VARectangle *src_rect,
+                               struct i965_surface *src_surface,
+                               VARectangle *dst_rect,
+                               struct i965_surface *dst_surface)
+{
+    unsigned int fourcc;
+    int width[3], height[3], pitch[3], bo_offset[3];
+    dri_bo *bo;
+    struct object_surface *obj_surface;
+    struct object_image *obj_image;
+    int bti;
+
+    if ((gpe_context == NULL) ||
+        (src_rect == NULL) || (src_surface == NULL) ||
+        (dst_rect == NULL) || (dst_surface == NULL))
+        return;
+
+    if (src_surface->base == NULL || dst_surface->base == NULL)
+        return;
+
+    fourcc = pp_get_surface_fourcc(ctx, src_surface);
+
+    if (src_surface->type == I965_SURFACE_TYPE_SURFACE) {
+        obj_surface = (struct object_surface *)src_surface->base;
+        bo = obj_surface->bo;
+    } else {
+        obj_image = (struct object_image *)src_surface->base;
+        bo = obj_image->bo;
+    }
+
+    bti = 0;
+    if (gen9_pp_context_get_surface_conf(ctx, src_surface, src_rect,
+                                         width, height, pitch,
+                                         bo_offset)) {
+        bti = BTI_SCALING_INPUT_Y;
+        /* Input surface */
+        gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+                                           bo_offset[0],
+                                           width[0], height[0],
+                                           pitch[0], 0,
+                                           I965_SURFACEFORMAT_R16_UN
ORM,
+                                           bti, 1);
+        if (fourcc == VA_FOURCC_P010) {
+            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+                                           bo_offset[1],
+                                           width[1], height[1],
+                                           pitch[1], 0,
+                                           I965_SURFACEFORMAT_R16G16
_UNORM,
+                                           bti + 1, 1);
+        } else {
+            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+                                           bo_offset[1],
+                                           width[1], height[1],
+                                           pitch[1], 0,
+                                           I965_SURFACEFORMAT_R16_UN
ORM,
+                                           bti + 1, 1);
+
+            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+                                           bo_offset[2],
+                                           width[2], height[2],
+                                           pitch[2], 0,
+                                           I965_SURFACEFORMAT_R16_UN
ORM,
+                                           bti + 2, 1);
+        }
+    }
+
+    fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+
+    if (dst_surface->type == I965_SURFACE_TYPE_SURFACE) {
+        obj_surface = (struct object_surface *)dst_surface->base;
+        bo = obj_surface->bo;
+    } else {
+        obj_image = (struct object_image *)dst_surface->base;
+        bo = obj_image->bo;
+    }
+
+    if (gen9_pp_context_get_surface_conf(ctx, dst_surface, dst_rect,
+                                         width, height, pitch,
+                                         bo_offset)) {
+        bti = BTI_SCALING_OUTPUT_Y;
+        /* Input surface */
+        gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+                                           bo_offset[0],
+                                           width[0], height[0],
+                                           pitch[0], 1,
+                                           I965_SURFACEFORMAT_R16_UI
NT,
+                                           bti, 1);
+        if (fourcc == VA_FOURCC_P010) {
+            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+                                           bo_offset[1],
+                                           width[1] * 2, height[1],
+                                           pitch[1], 1,
+                                           I965_SURFACEFORMAT_R16_UI
NT,
+                                           bti + 1, 1);
+        } else {
+            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+                                           bo_offset[1],
+                                           width[1], height[1],
+                                           pitch[1], 1,
+                                           I965_SURFACEFORMAT_R16_UI
NT,
+                                           bti + 1, 1);
+
+            gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
+                                           bo_offset[2],
+                                           width[2], height[2],
+                                           pitch[2], 1,
+                                           I965_SURFACEFORMAT_R16_UI
NT,
+                                           bti + 2, 1);
+        }
+    }
+
+    return;
+}
+
+VAStatus
+gen9_p010_scaling_post_processing(
+    VADriverContextP   ctx,
+    struct i965_post_processing_context *pp_context,
+    struct i965_surface *src_surface,
+    VARectangle *src_rect,
+    struct i965_surface *dst_surface,
+    VARectangle *dst_rect)
+{
+    struct i965_gpe_context *gpe_context;
+    struct gpe_media_object_walker_parameter
media_object_walker_param;
+    struct intel_vpp_kernel_walker_parameter kernel_walker_param;
+
+    if (!pp_context || !src_surface || !src_rect || !dst_surface ||
!dst_rect)
+        return VA_STATUS_ERROR_INVALID_PARAMETER;
+
+    if (!pp_context->scaling_context_initialized)
+        return VA_STATUS_ERROR_UNIMPLEMENTED;
+
+    gpe_context = &pp_context->scaling_10bit_context;
+
+    gen8_gpe_context_init(ctx, gpe_context);
+    gen9_p010_scaling_sample_state(ctx, gpe_context, src_rect,
dst_rect);
+    gen9_gpe_reset_binding_table(ctx, gpe_context);
+    gen9_gpe_context_p010_scaling_curbe(ctx, gpe_context,
+                                        src_rect, src_surface,
+                                        dst_rect, dst_surface);
+
+    gen9_gpe_context_p010_scaling_surfaces(ctx, gpe_context,
+                                        src_rect, src_surface,
+                                        dst_rect, dst_surface);
+
+    gen8_gpe_setup_interface_data(ctx, gpe_context);
+
+    memset(&kernel_walker_param, 0, sizeof(kernel_walker_param));
+    kernel_walker_param.resolution_x = ALIGN(dst_rect->width, 16) >>
4;
+    kernel_walker_param.resolution_y = ALIGN(dst_rect->height, 16)
Post by Zhao Yakui
4;
+    kernel_walker_param.no_dependency = 1;
+
+    intel_vpp_init_media_object_walker_parameter(&kernel_walker_para
m, &media_object_walker_param);
+
+    gen9_run_kernel_media_object_walker(ctx, pp_context->batch,
+                                        gpe_context,
+                                        &media_object_walker_param);
+
+    return VA_STATUS_SUCCESS;
 }
diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index 7f2146e..1e3d6cd 100644
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -48,6 +48,8 @@
 #include "i965_decoder.h"
 #include "i965_encoder.h"
 
+#include "i965_post_processing.h"
+
 #include "gen9_vp9_encapi.h"
 
 #define CONFIG_ID_OFFSET                0x01000000
diff --git a/src/i965_encoder.c b/src/i965_encoder.c
index 8587fd5..4ef92eb 100644
--- a/src/i965_encoder.c
+++ b/src/i965_encoder.c
@@ -40,6 +40,8 @@
 #include "gen6_vme.h"
 #include "gen6_mfc.h"
 
+#include "i965_post_processing.h"
+
 static VAStatus
 clear_border(struct object_surface *obj_surface)
 {
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index 30529e1..95dc9c3 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1856,7 +1856,35 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
     buf = (char *)gpe_context->surface_state_binding_table.bo-
Post by Zhao Yakui
virtual;
     *((unsigned int *)(buf + binding_table_offset)) =
surface_state_offset;
 
-    if (gpe_surface->is_2d_surface && gpe_surface->is_uv_surface) {
+    if (gpe_surface->is_2d_surface && gpe_surface-
Post by Zhao Yakui
is_override_offset) {
+        struct gen9_surface_state *ss = (struct gen9_surface_state
*)(buf + surface_state_offset);
+
+        width = gpe_resource->width;
+        height = gpe_resource->height;
+        pitch = gpe_resource->pitch;
+
+        if (gpe_surface->is_media_block_rw) {
+            if (gpe_surface->is_10bit)
+                width = (ALIGN(width * 2, 4) >> 2);
+            else
+                width = (ALIGN(width, 4) >> 2);
+        }
+
+
+        gen9_gpe_set_2d_surface_state(ss,
+                                      gpe_surface-
Post by Zhao Yakui
cacheability_control,
+                                      gpe_surface->format,
+                                      tiling,
+                                      width, height, pitch,
+                                      gpe_resource->bo->offset64 +
gpe_surface->offset,
+                                      0);
+
+        dri_bo_emit_reloc(gpe_context-
Post by Zhao Yakui
surface_state_binding_table.bo,
+                          I915_GEM_DOMAIN_RENDER,
I915_GEM_DOMAIN_RENDER,
+                          gpe_surface->offset,
+                          surface_state_offset + offsetof(struct
gen9_surface_state, ss8),
+                          gpe_resource->bo);
+    } else if (gpe_surface->is_2d_surface && gpe_surface-
Post by Zhao Yakui
is_uv_surface) {
         unsigned int cbcr_offset;
         struct gen9_surface_state *ss = (struct gen9_surface_state
*)(buf + surface_state_offset);
 
diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
index 383fcdf..e3ffbae 100644
--- a/src/i965_gpe_utils.h
+++ b/src/i965_gpe_utils.h
@@ -418,6 +418,8 @@ struct i965_gpe_surface
     unsigned int is_media_block_rw:1;
     unsigned int is_raw_buffer:1;
     unsigned int is_10bit     :1;
+    /* use the override_offset for 2d_surface */
+    unsigned int is_override_offset : 1;
 
     unsigned int vert_line_stride_offset;
     unsigned int vert_line_stride;
@@ -425,7 +427,7 @@ struct i965_gpe_surface
     unsigned int format; // 2d surface only
     unsigned int v_direction; // adv surface only
     unsigned int size; // buffer only
-    unsigned int offset; // buffer only
+    unsigned int offset;
 
     struct i965_gpe_resource *gpe_resource;
 };
diff --git a/src/i965_post_processing.h b/src/i965_post_processing.h
index a9942b2..e55bf0b 100755
--- a/src/i965_post_processing.h
+++ b/src/i965_post_processing.h
@@ -30,9 +30,15 @@
 #define __I965_POST_PROCESSING_H__
 
 #include "i965_vpp_avs.h"
+#include <drm.h>
+#include <i915_drm.h>
+#include <intel_bufmgr.h>
+#include "i965_gpe_utils.h"
 
 #define MAX_PP_SURFACES                 48
 
+struct i965_gpe_context;
+
 enum
 {
     PP_NULL = 0,
@@ -590,6 +596,10 @@ struct i965_post_processing_context
  void * filter_param);
     void (*finalize)(VADriverContextP ctx,
         struct i965_post_processing_context *pp_context);
+
+
+    struct i965_gpe_context scaling_10bit_context;
+    int scaling_context_initialized;
 };
 
 struct i965_proc_context
diff --git a/src/i965_render.h b/src/i965_render.h
index 2114cad..227a15b 100644
--- a/src/i965_render.h
+++ b/src/i965_render.h
@@ -35,7 +35,6 @@
 
 #define VA_SRC_COLOR_MASK       0x000000f0
 
-#include "i965_post_processing.h"
 
 struct i965_kernel;
 
diff --git a/src/shaders/post_processing/gen9/conv_p010.g9b
b/src/shaders/post_processing/gen9/conv_p010.g9b
new file mode 100644
index 0000000..536a46c
--- /dev/null
+++ b/src/shaders/post_processing/gen9/conv_p010.g9b
@@ -0,0 +1,783 @@
+{ 0x00600001, 0x20602648, 0x00000000, 0x76543210 },
+{ 0x00000005, 0x2380124c, 0x16000004, 0x07ff07ff },
+{ 0x00600001, 0x23a01208, 0x008d0060, 0x00000000 },
+{ 0x00000005, 0x2382124c, 0x16000006, 0x07ff07ff },
+{ 0x00000041, 0x20a01208, 0x16000380, 0x00100010 },
+{ 0x00600040, 0x23c00208, 0x168d03a0, 0x00080008 },
+{ 0x00000041, 0x20801228, 0x16000382, 0x00100010 },
+{ 0x00000040, 0x20c00208, 0x02000040, 0x000000a0 },
+{ 0x00800040, 0x23a00208, 0x028d03a0, 0x000000a0 },
+{ 0x00800001, 0x212002e8, 0x00000080, 0x00000000 },
+{ 0x00800001, 0x20e002e8, 0x008d03a0, 0x00000000 },
+{ 0x00000001, 0x21603ee8, 0x00000000, 0x3f000000 },
+{ 0x0080015b, 0x211e0000, 0xc0202a01, 0x02472004 },
+{ 0x0080015b, 0x1f1e0000, 0x80202801, 0x01c72004 },
+{ 0x0080015b, 0x211e0000, 0x802211c8, 0x02c00403 },
+{ 0x0080015b, 0x1f1e0000, 0x4021f1c8, 0x02c00403 },
+{ 0x00000001, 0x238c1e28, 0x00000000, 0x00000000 },
+{ 0x00000001, 0x25c80208, 0x0000005c, 0x00000000 },
+{ 0x00000009, 0x23840228, 0x160000c0, 0x00010001 },
+{ 0x00000040, 0x23880228, 0x02000044, 0x00000080 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
+{ 0x02800031, 0x24600268, 0x00000060, 0x00000200 },
+{ 0x00000001, 0x23900ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000390 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x23941ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000394 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x24603ae8, 0x3e8d0460, 0x3c800000 },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x0000004c },
+{ 0x00600001, 0x20a00208, 0x008d0000, 0x00000000 },
+{ 0x00800001, 0x21800608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21401ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x20603a28, 0x008d0460, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
+{ 0x00800001, 0x21000208, 0x008d0420, 0x00000000 },
+{ 0x00000001, 0x20a80608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x02800031, 0x24600268, 0x000000a0, 0x00000200 },
+{ 0x00000001, 0x23900ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000390 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x23941ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000394 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x24603ae8, 0x3e8d0460, 0x3c800000 },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x0000004c },
+{ 0x00600001, 0x20a00208, 0x008d0000, 0x00000000 },
+{ 0x00800001, 0x21800608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21401ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x20603a28, 0x008d0460, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
+{ 0x00800001, 0x21000208, 0x008d0420, 0x00000000 },
+{ 0x00000001, 0x20a80608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x24c01248, 0x00400060, 0x00000000 },
+{ 0x02800031, 0x24600268, 0x000000a0, 0x00000200 },
+{ 0x00000001, 0x23900ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000390 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x23941ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000394 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x24603ae8, 0x3e8d0460, 0x3c800000 },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x0000004c },
+{ 0x00600001, 0x20a00208, 0x008d0000, 0x00000000 },
+{ 0x00800001, 0x21800608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21401ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x20603a28, 0x008d0460, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
+{ 0x00800001, 0x21000208, 0x008d0420, 0x00000000 },
+{ 0x00000001, 0x20a80608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x24e01248, 0x00400060, 0x00000000 },
+{ 0x02800031, 0x24600268, 0x000000a0, 0x00000200 },
+{ 0x00000001, 0x23900ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000390 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x23941ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x24603ae8, 0x3a8d0460, 0x00000394 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x24603ae8, 0x3e8d0460, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0460, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x238c0a28, 0x1e00038c, 0x00010001 },
+{ 0x00000040, 0x22000204, 0x060005c8, 0x020a8000 },
+{ 0x00800001, 0x25001248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0003001f },
+{ 0x05000010, 0x20000a20, 0x1e00038c, 0x00040004 },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x0000004c },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00040004 },
+{ 0x0c600033, 0x00025014, 0x000020a4, 0x00000000 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0xfffffa60 },
+{ 0x00600001, 0x20602668, 0x00000000, 0x76543210 },
+{ 0x00000041, 0x20a01228, 0x16000382, 0x00100010 },
+{ 0x00600009, 0x23c01a08, 0x168d0060, 0x00010001 },
+{ 0x00000041, 0x20801208, 0x16000380, 0x00100010 },
+{ 0x00600001, 0x20c00a08, 0x000000a0, 0x00000000 },
+{ 0x00600001, 0x23a00208, 0x008d03c0, 0x00000000 },
+{ 0x00600040, 0x20e00208, 0x168d00c0, 0x00020002 },
+{ 0x00800040, 0x23a00208, 0x028d03a0, 0x00000080 },
+{ 0x00800001, 0x218002e8, 0x008d00c0, 0x00000000 },
+{ 0x00800001, 0x214002e8, 0x008d03a0, 0x00000000 },
+{ 0x00000005, 0x21c00208, 0x1600003c, 0x000c000c },
+{ 0x0080015b, 0x211e0000, 0xc0202a01, 0x03072004 },
+{ 0x0080015b, 0x1f1e0000, 0x80202801, 0x02872004 },
+{ 0x00000040, 0x21200228, 0x02000044, 0x000000a0 },
+{ 0x00000040, 0x21000208, 0x02000040, 0x00000080 },
+{ 0x02000010, 0x20000200, 0x160001c0, 0x000c000c },
+{ 0x00800040, 0x24203ae8, 0x3a8d0420, 0x00000038 },
+{ 0x00800040, 0x23e03ae8, 0x3a8d03e0, 0x00000034 },
+{ 0x00000040, 0x23980208, 0x16000058, 0x00010001 },
+{ 0x00000040, 0x239c0208, 0x16000058, 0x00020002 },
+{ 0x00000040, 0x25200208, 0x1600005c, 0x00010001 },
+{ 0x00000040, 0x25240208, 0x1600005c, 0x00020002 },
+{ 0x0000000c, 0x23880a28, 0x1e000120, 0x00010001 },
+{ 0x00000009, 0x23840228, 0x16000100, 0x00010001 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x000009a0 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
+{ 0x02800031, 0x25400268, 0x00000060, 0x00000200 },
+{ 0x00000001, 0x25280ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000528 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000528 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x252c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000052c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000052c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00600001, 0x20e03a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20a03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20803a28, 0x008d0560, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x2120020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x41000a48, 0x008d00e0, 0x00000000 },
+{ 0x00600001, 0x40c00a48, 0x008d00a0, 0x00000000 },
+{ 0x00600001, 0x44c00a48, 0x008d0080, 0x00000000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00000001, 0x2124020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x2120020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2128060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x00400100, 0x00000000 },
+{ 0x00600001, 0x44a21248, 0x004000c0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x00002122, 0x00000000 },
+{ 0x00000001, 0x21403ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21600208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980414 },
+{ 0x00800001, 0x22400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21680608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21c00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000160, 0x00000200 },
+{ 0x00000001, 0x25280ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000528 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000528 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x252c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000052c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000052c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00600001, 0x20e03a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20a03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20803a28, 0x008d0560, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x2120020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x41000a48, 0x008d00e0, 0x00000000 },
+{ 0x00600001, 0x40c00a48, 0x008d00a0, 0x00000000 },
+{ 0x00600001, 0x44c00a48, 0x008d0080, 0x00000000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00000001, 0x2124020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x2120020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2128060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x00400100, 0x00000000 },
+{ 0x00600001, 0x44a21248, 0x004000c0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x00002122, 0x00000000 },
+{ 0x00000001, 0x21403ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21600208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980414 },
+{ 0x00800001, 0x22400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21680608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21c00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000160, 0x00000200 },
+{ 0x00000001, 0x25280ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000528 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000528 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x252c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000052c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000052c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00600001, 0x20e03a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20a03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20803a28, 0x008d0560, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x2120020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x41000a48, 0x008d00e0, 0x00000000 },
+{ 0x00600001, 0x40c00a48, 0x008d00a0, 0x00000000 },
+{ 0x00600001, 0x44c00a48, 0x008d0080, 0x00000000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00000001, 0x2124020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x2120020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2128060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x00400100, 0x00000000 },
+{ 0x00600001, 0x44a21248, 0x004000c0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x00002122, 0x00000000 },
+{ 0x00000001, 0x21403ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21600208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980414 },
+{ 0x00800001, 0x22400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21680608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21c00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000160, 0x00000200 },
+{ 0x00000001, 0x25280ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000528 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000528 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x252c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000052c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000052c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00600001, 0x20e03a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20a03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20803a28, 0x008d0560, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x2120020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x41000a48, 0x008d00e0, 0x00000000 },
+{ 0x00600001, 0x40c00a48, 0x008d00a0, 0x00000000 },
+{ 0x00600001, 0x44c00a48, 0x008d0080, 0x00000000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00000001, 0x2124020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x2120020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2128060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x00400100, 0x00000000 },
+{ 0x00600001, 0x44a21248, 0x004000c0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x00002122, 0x00000000 },
+{ 0x00000020, 0x34000004, 0x0e001400, 0x00001ec0 },
+{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
+{ 0x02000010, 0x20000200, 0x16000060, 0x00080008 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000960 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
+{ 0x02800031, 0x25400268, 0x00000060, 0x00000200 },
+{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x21a00208, 0x008d03e0, 0x00000000 },
+{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000180, 0x00000200 },
+{ 0x00000001, 0x25300ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000530 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x25341ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000534 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00600001, 0x20803a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20c0020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x40a00a48, 0x008d0080, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000001, 0x20c4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20c0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20c8060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x004000a0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x000020c2, 0x00000000 },
+{ 0x00000001, 0x20e03ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21000208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x0098040e },
+{ 0x00800001, 0x21e00608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21a01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21200208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21080608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21600208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22200208, 0x008d0100, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000100, 0x00000200 },
+{ 0x00800001, 0x23000608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22c01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22400208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d0160, 0x00000000 },
+{ 0x00000001, 0x25300ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000220, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000530 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x25341ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000534 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00600001, 0x20803a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20c0020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x40a00a48, 0x008d0080, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000001, 0x20c4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20c0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20c8060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x004000a0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x000020c2, 0x00000000 },
+{ 0x00000001, 0x20e03ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21000208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x0098040e },
+{ 0x00800001, 0x21e00608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21a01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21200208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21080608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21600208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22200208, 0x008d0100, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000100, 0x00000200 },
+{ 0x00800001, 0x23000608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22c01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22400208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d0160, 0x00000000 },
+{ 0x00000001, 0x25300ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000220, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000530 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x25341ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000534 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00600001, 0x20803a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20c0020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x40a00a48, 0x008d0080, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000001, 0x20c4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20c0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20c8060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x004000a0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x000020c2, 0x00000000 },
+{ 0x00000001, 0x20e03ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21000208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x0098040e },
+{ 0x00800001, 0x21e00608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21a01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21200208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21080608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21600208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22200208, 0x008d0100, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000100, 0x00000200 },
+{ 0x00800001, 0x23000608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22c01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22400208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d0160, 0x00000000 },
+{ 0x00000001, 0x25300ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000220, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000530 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00000001, 0x25341ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000534 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000010 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00600001, 0x20803a28, 0x008d05a0, 0x00000000 },
+{ 0x00600001, 0x20603a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x20c0020c, 0x008d0000, 0x00000000 },
+{ 0x00600001, 0x40a00a48, 0x008d0080, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00600001, 0x44a00a48, 0x008d0060, 0x00000000 },
+{ 0x00000001, 0x20c4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20c0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20c8060c, 0x00000000, 0x0001001f },
+{ 0x00600001, 0x44c21248, 0x004000a0, 0x00000000 },
+{ 0x0c600033, 0x00025014, 0x000020c2, 0x00000000 },
+{ 0x00000020, 0x34000004, 0x0e001400, 0x00001530 },
+{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
+{ 0x02000010, 0x20000200, 0x16000060, 0x00040004 },
+{ 0x0000000c, 0x23840a28, 0x1e000384, 0x00010001 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x000009a0 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
+{ 0x02800031, 0x25400268, 0x00000060, 0x00000200 },
+{ 0x00000001, 0x25380ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000538 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000538 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x253c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000053c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000053c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00000001, 0x25380ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000538 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000538 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x253c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000053c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000053c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00000001, 0x25380ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000538 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000538 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x253c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000053c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000053c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000c000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x124c0000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00000001, 0x25380ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x00000538 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x00000538 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x253c1ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x0000053c },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x0000053c },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000020, 0x34000004, 0x0e001400, 0x00000b50 },
+{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x20c00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x20800208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
+{ 0x02800031, 0x25400268, 0x00000060, 0x00000200 },
+{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e00208, 0x008d0420, 0x00000000 },
+{ 0x00800001, 0x21a00208, 0x008d03e0, 0x00000000 },
+{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000180, 0x00000200 },
+{ 0x00000001, 0x25c00ee8, 0x00000000, 0x0000ffff },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c0 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c0 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x25c41ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c4 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c4 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22600208, 0x008d0140, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00800001, 0x23400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x23001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22c00208, 0x008d01a0, 0x00000000 },
+{ 0x00000001, 0x25c00ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000260, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c0 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c0 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x25c41ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c4 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c4 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22600208, 0x008d0140, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00800001, 0x23400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x23001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22c00208, 0x008d01a0, 0x00000000 },
+{ 0x00000001, 0x25c00ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000260, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c0 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c0 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x25c41ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c4 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c4 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x23880a28, 0x1e000388, 0x00020002 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00000001, 0x21203ee8, 0x00000000, 0x40800000 },
+{ 0x00600001, 0x21400208, 0x008d0000, 0x00000000 },
+{ 0x0080015b, 0x211e0000, 0x002211c8, 0x00980412 },
+{ 0x00800001, 0x22200608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21e01ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x21600208, 0x008d03e0, 0x00000000 },
+{ 0x00000001, 0x21480608, 0x00000000, 0x0000e000 },
+{ 0x00800001, 0x21a00208, 0x008d0420, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000398, 0x122c0000 },
+{ 0x00600001, 0x22600208, 0x008d0140, 0x00000000 },
+{ 0x02800031, 0x25400268, 0x00000140, 0x00000200 },
+{ 0x00800001, 0x23400608, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x23001ee8, 0x00000000, 0x00000000 },
+{ 0x00800001, 0x22800208, 0x008d03e0, 0x00000000 },
+{ 0x00800001, 0x22c00208, 0x008d01a0, 0x00000000 },
+{ 0x00000001, 0x25c00ee8, 0x00000000, 0x0000ffff },
+{ 0x00000040, 0x22000204, 0x0600039c, 0x122c0000 },
+{ 0x02800031, 0x25800268, 0x00000260, 0x00000200 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00010001 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c0 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c0 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000030 },
+{ 0x00000001, 0x25c41ee8, 0x00000000, 0x00400040 },
+{ 0x00800041, 0x25403ae8, 0x3a8d0540, 0x000005c4 },
+{ 0x00800041, 0x25803ae8, 0x3a8d0580, 0x000005c4 },
+{ 0x02000005, 0x20000200, 0x1600003c, 0x00020002 },
+{ 0x00010020, 0x34000004, 0x0e001400, 0x00000020 },
+{ 0x00800041, 0x25803ae8, 0x3e8d0580, 0x3c800000 },
+{ 0x00800041, 0x25403ae8, 0x3e8d0540, 0x3c800000 },
+{ 0x00800001, 0x20603a28, 0x008d0540, 0x00000000 },
+{ 0x00600001, 0x20a0020c, 0x008d0000, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000520, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x00400060, 0x00000000 },
+{ 0x00000001, 0x20a4020c, 0x00000388, 0x00000000 },
+{ 0x00000001, 0x20a0020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x20a8060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x000020a1, 0x00000000 },
+{ 0x00800001, 0x20c03a28, 0x008d0580, 0x00000000 },
+{ 0x00600001, 0x2100020c, 0x008d0000, 0x00000000 },
+{ 0x00000001, 0x2104020c, 0x00000388, 0x00000000 },
+{ 0x00000040, 0x22000204, 0x06000524, 0x020a8000 },
+{ 0x00800001, 0x24a01248, 0x004000c0, 0x00000000 },
+{ 0x00000001, 0x2100020c, 0x00000384, 0x00000000 },
+{ 0x00000001, 0x2108060c, 0x00000000, 0x0001000f },
+{ 0x0c600033, 0x00025014, 0x00002101, 0x00000000 },
+{ 0x00600001, 0x2fe0020c, 0x008d0000, 0x00000000 },
+{ 0x07000031, 0x20000200, 0x06000fe0, 0x82000010 },
Zhao Yakui
2016-11-09 19:39:53 UTC
Permalink
Now the 10-bit scaling based on GPU shader is supported on Gen9+. In such
case it will use the 10-bit scaling based on GPU shader instead of three-steps
by using VEBOX(VEBOX->NV12->Scale NV12->VEBOX). Of course when the size is
not changed, it still falls back to VEBOX.


Signed-off-by: Zhao Yakui <***@intel.com>
---
src/gen75_picture_process.c | 50 +++++++++++++++++++++++++++++++++++++++------
1 file changed, 44 insertions(+), 6 deletions(-)

diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
index 069088a..4f7f794 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -38,6 +38,7 @@
#include "i965_drv_video.h"
#include "i965_post_processing.h"
#include "gen75_picture_process.h"
+#include "gen8_post_processing.h"

extern struct hw_context *
i965_proc_context_init(VADriverContextP ctx,
@@ -91,6 +92,21 @@ gen75_vpp_vebox(VADriverContextP ctx,
return va_status;
}

+static int intel_gpe_support_10bit_scaling(struct intel_video_process_context *proc_ctx)
+{
+ struct i965_proc_context *gpe_proc_ctx;
+
+ if (!proc_ctx || !proc_ctx->vpp_fmt_cvt_ctx)
+ return 0;
+
+ gpe_proc_ctx = (struct i965_proc_context *)proc_ctx->vpp_fmt_cvt_ctx;
+
+ if (gpe_proc_ctx->pp_context.scaling_context_initialized)
+ return 1;
+ else
+ return 0;
+}
+
VAStatus
gen75_proc_picture(VADriverContextP ctx,
VAProfile profile,
@@ -165,12 +181,6 @@ gen75_proc_picture(VADriverContextP ctx,
i965_check_alloc_surface_bo(ctx, obj_dst_surf, is_tiled, fourcc, sampling);
}

- proc_ctx->surface_render_output_object = obj_dst_surf;
- proc_ctx->surface_pipeline_input_object = obj_src_surf;
- assert(pipeline_param->num_filters <= 4);
-
- int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0;
-
if (pipeline_param->surface_region) {
src_rect.x = pipeline_param->surface_region->x;
src_rect.y = pipeline_param->surface_region->y;
@@ -195,6 +205,34 @@ gen75_proc_picture(VADriverContextP ctx,
dst_rect.height = obj_dst_surf->orig_height;
}

+ if (pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ){
+ if ((obj_src_surf->fourcc == VA_FOURCC_P010) &&
+ (obj_dst_surf->fourcc == VA_FOURCC_P010) &&
+ (src_rect.width != dst_rect.width ||
+ src_rect.height != dst_rect.height) &&
+ intel_gpe_support_10bit_scaling(proc_ctx)) {
+ struct i965_proc_context *gpe_proc_ctx;
+ struct i965_surface src_surface, dst_surface;
+
+ src_surface.base = (struct object_base *)obj_src_surf;
+ src_surface.type = I965_SURFACE_TYPE_SURFACE;
+ dst_surface.base = (struct object_base *)obj_dst_surf;
+ dst_surface.type = I965_SURFACE_TYPE_SURFACE;
+ gpe_proc_ctx = (struct i965_proc_context *)proc_ctx->vpp_fmt_cvt_ctx;
+
+ return gen9_p010_scaling_post_processing(ctx, &gpe_proc_ctx->pp_context,
+ &src_surface, &src_rect,
+ &dst_surface, &dst_rect);
+ }
+ }
+
+ proc_ctx->surface_render_output_object = obj_dst_surf;
+ proc_ctx->surface_pipeline_input_object = obj_src_surf;
+ assert(pipeline_param->num_filters <= 4);
+
+ int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0;
+
+
if(obj_src_surf->fourcc == VA_FOURCC_P010) {
vpp_stage1 = 1;
vpp_stage2 = 0;
--
2.8.3
Xiang, Haihao
2016-11-11 07:05:46 UTC
Permalink
Post by Zhao Yakui
Now the 10-bit scaling based on GPU shader is supported on Gen9+. In such
case it will use the 10-bit scaling based on GPU shader instead of three-steps
by using VEBOX(VEBOX->NV12->Scale NV12->VEBOX).
The 2nd step (NV12 to scale NV12) doesn't use VEBOX.
Post by Zhao Yakui
Of course when the size is
not changed, it still falls back to VEBOX.
---
 src/gen75_picture_process.c | 50
+++++++++++++++++++++++++++++++++++++++------
 1 file changed, 44 insertions(+), 6 deletions(-)
diff --git a/src/gen75_picture_process.c
b/src/gen75_picture_process.c
index 069088a..4f7f794 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -38,6 +38,7 @@
 #include "i965_drv_video.h"
 #include "i965_post_processing.h"
 #include "gen75_picture_process.h"
+#include "gen8_post_processing.h"
 
 extern struct hw_context *
 i965_proc_context_init(VADriverContextP ctx,
@@ -91,6 +92,21 @@ gen75_vpp_vebox(VADriverContextP ctx,
      return va_status;
 }
 
+static int intel_gpe_support_10bit_scaling(struct
intel_video_process_context *proc_ctx)
+{
+    struct i965_proc_context *gpe_proc_ctx;
+
+    if (!proc_ctx || !proc_ctx->vpp_fmt_cvt_ctx)
+        return 0;
+
+    gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
Post by Zhao Yakui
vpp_fmt_cvt_ctx;
+
+    if (gpe_proc_ctx->pp_context.scaling_context_initialized)
+        return 1;
+    else
+        return 0;
+}
+
 VAStatus
 gen75_proc_picture(VADriverContextP ctx,
                    VAProfile profile,
@@ -165,12 +181,6 @@ gen75_proc_picture(VADriverContextP ctx,
         i965_check_alloc_surface_bo(ctx, obj_dst_surf, is_tiled,
fourcc, sampling);
     }  
 
-    proc_ctx->surface_render_output_object = obj_dst_surf;
-    proc_ctx->surface_pipeline_input_object = obj_src_surf;
-    assert(pipeline_param->num_filters <= 4);
-
-    int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0;
-
     if (pipeline_param->surface_region) {
         src_rect.x = pipeline_param->surface_region->x;
         src_rect.y = pipeline_param->surface_region->y;
@@ -195,6 +205,34 @@ gen75_proc_picture(VADriverContextP ctx,
         dst_rect.height = obj_dst_surf->orig_height;
     }
 
+    if (pipeline_param->num_filters == 0 || pipeline_param->filters
== NULL ){
+        if ((obj_src_surf->fourcc == VA_FOURCC_P010) &&
+            (obj_dst_surf->fourcc == VA_FOURCC_P010) &&
+            (src_rect.width != dst_rect.width ||
+                 src_rect.height != dst_rect.height) &&
+            intel_gpe_support_10bit_scaling(proc_ctx)) {
+            struct i965_proc_context *gpe_proc_ctx;
+            struct i965_surface src_surface, dst_surface;
+
+            src_surface.base = (struct object_base *)obj_src_surf;
+            src_surface.type = I965_SURFACE_TYPE_SURFACE;
+            dst_surface.base = (struct object_base *)obj_dst_surf;
+            dst_surface.type = I965_SURFACE_TYPE_SURFACE;
+            gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
Post by Zhao Yakui
vpp_fmt_cvt_ctx;
+
+            return gen9_p010_scaling_post_processing(ctx,
&gpe_proc_ctx->pp_context,
+                                                     &src_surface,
&src_rect,
+                                                     &dst_surface,
&dst_rect);
+        }
+    }
+
+    proc_ctx->surface_render_output_object = obj_dst_surf;
+    proc_ctx->surface_pipeline_input_object = obj_src_surf;
+    assert(pipeline_param->num_filters <= 4);
+
+    int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0;
+
+
     if(obj_src_surf->fourcc == VA_FOURCC_P010) {
         vpp_stage1 = 1;
         vpp_stage2 = 0;
Zhao Yakui
2016-11-11 07:21:07 UTC
Permalink
Post by Xiang, Haihao
Post by Zhao Yakui
Now the 10-bit scaling based on GPU shader is supported on Gen9+. In such
case it will use the 10-bit scaling based on GPU shader instead of three-steps
by using VEBOX(VEBOX->NV12->Scale NV12->VEBOX).
The 2nd step (NV12 to scale NV12) doesn't use VEBOX.
Yes. This is only to indicate that it needs the intermediate buffer for
the corresponding conversion.

I will update the change log in next version.
Post by Xiang, Haihao
Post by Zhao Yakui
Of course when the size is
not changed, it still falls back to VEBOX.
---
src/gen75_picture_process.c | 50
+++++++++++++++++++++++++++++++++++++++------
1 file changed, 44 insertions(+), 6 deletions(-)
diff --git a/src/gen75_picture_process.c
b/src/gen75_picture_process.c
index 069088a..4f7f794 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -38,6 +38,7 @@
#include "i965_drv_video.h"
#include "i965_post_processing.h"
#include "gen75_picture_process.h"
+#include "gen8_post_processing.h"
extern struct hw_context *
i965_proc_context_init(VADriverContextP ctx,
@@ -91,6 +92,21 @@ gen75_vpp_vebox(VADriverContextP ctx,
return va_status;
}
+static int intel_gpe_support_10bit_scaling(struct
intel_video_process_context *proc_ctx)
+{
+ struct i965_proc_context *gpe_proc_ctx;
+
+ if (!proc_ctx || !proc_ctx->vpp_fmt_cvt_ctx)
+ return 0;
+
+ gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
Post by Zhao Yakui
vpp_fmt_cvt_ctx;
+
+ if (gpe_proc_ctx->pp_context.scaling_context_initialized)
+ return 1;
+ else
+ return 0;
+}
+
VAStatus
gen75_proc_picture(VADriverContextP ctx,
VAProfile profile,
@@ -165,12 +181,6 @@ gen75_proc_picture(VADriverContextP ctx,
i965_check_alloc_surface_bo(ctx, obj_dst_surf, is_tiled, fourcc, sampling);
}
- proc_ctx->surface_render_output_object = obj_dst_surf;
- proc_ctx->surface_pipeline_input_object = obj_src_surf;
- assert(pipeline_param->num_filters<= 4);
-
- int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0;
-
if (pipeline_param->surface_region) {
src_rect.x = pipeline_param->surface_region->x;
src_rect.y = pipeline_param->surface_region->y;
@@ -195,6 +205,34 @@ gen75_proc_picture(VADriverContextP ctx,
dst_rect.height = obj_dst_surf->orig_height;
}
+ if (pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ){
+ if ((obj_src_surf->fourcc == VA_FOURCC_P010)&&
+ (obj_dst_surf->fourcc == VA_FOURCC_P010)&&
+ (src_rect.width != dst_rect.width ||
+ src_rect.height != dst_rect.height)&&
+ intel_gpe_support_10bit_scaling(proc_ctx)) {
+ struct i965_proc_context *gpe_proc_ctx;
+ struct i965_surface src_surface, dst_surface;
+
+ src_surface.base = (struct object_base *)obj_src_surf;
+ src_surface.type = I965_SURFACE_TYPE_SURFACE;
+ dst_surface.base = (struct object_base *)obj_dst_surf;
+ dst_surface.type = I965_SURFACE_TYPE_SURFACE;
+ gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
Post by Zhao Yakui
vpp_fmt_cvt_ctx;
+
+ return gen9_p010_scaling_post_processing(ctx,
&gpe_proc_ctx->pp_context,
+&src_surface,
&src_rect,
+&dst_surface,
&dst_rect);
+ }
+ }
+
+ proc_ctx->surface_render_output_object = obj_dst_surf;
+ proc_ctx->surface_pipeline_input_object = obj_src_surf;
+ assert(pipeline_param->num_filters<= 4);
+
+ int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0;
+
+
if(obj_src_surf->fourcc == VA_FOURCC_P010) {
vpp_stage1 = 1;
vpp_stage2 = 0;
Sean V Kelley
2016-11-14 22:45:29 UTC
Permalink
Post by Xiang, Haihao
Post by Zhao Yakui
Now the 10-bit scaling based on GPU shader is supported on Gen9+. In such
case it will use the 10-bit scaling based on GPU shader instead of three-steps
by using VEBOX(VEBOX->NV12->Scale NV12->VEBOX).
The 2nd step (NV12 to scale NV12) doesn't use VEBOX.
Yes. This is only to indicate that it needs the intermediate buffer for the
corresponding conversion.
I will update the change log in next version.
Agree, otherwise rest lgtm.

Sean
Post by Xiang, Haihao
Post by Zhao Yakui
Of course when the size is
not changed, it still falls back to VEBOX.
---
src/gen75_picture_process.c | 50
+++++++++++++++++++++++++++++++++++++++------
1 file changed, 44 insertions(+), 6 deletions(-)
diff --git a/src/gen75_picture_process.c
b/src/gen75_picture_process.c
index 069088a..4f7f794 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -38,6 +38,7 @@
#include "i965_drv_video.h"
#include "i965_post_processing.h"
#include "gen75_picture_process.h"
+#include "gen8_post_processing.h"
extern struct hw_context *
i965_proc_context_init(VADriverContextP ctx,
@@ -91,6 +92,21 @@ gen75_vpp_vebox(VADriverContextP ctx,
return va_status;
}
+static int intel_gpe_support_10bit_scaling(struct
intel_video_process_context *proc_ctx)
+{
+ struct i965_proc_context *gpe_proc_ctx;
+
+ if (!proc_ctx || !proc_ctx->vpp_fmt_cvt_ctx)
+ return 0;
+
+ gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
Post by Zhao Yakui
vpp_fmt_cvt_ctx;
+
+ if (gpe_proc_ctx->pp_context.scaling_context_initialized)
+ return 1;
+ else
+ return 0;
+}
+
VAStatus
gen75_proc_picture(VADriverContextP ctx,
VAProfile profile,
@@ -165,12 +181,6 @@ gen75_proc_picture(VADriverContextP ctx,
i965_check_alloc_surface_bo(ctx, obj_dst_surf, is_tiled, fourcc, sampling);
}
- proc_ctx->surface_render_output_object = obj_dst_surf;
- proc_ctx->surface_pipeline_input_object = obj_src_surf;
- assert(pipeline_param->num_filters<= 4);
-
- int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0;
-
if (pipeline_param->surface_region) {
src_rect.x = pipeline_param->surface_region->x;
src_rect.y = pipeline_param->surface_region->y;
@@ -195,6 +205,34 @@ gen75_proc_picture(VADriverContextP ctx,
dst_rect.height = obj_dst_surf->orig_height;
}
+ if (pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ){
+ if ((obj_src_surf->fourcc == VA_FOURCC_P010)&&
+ (obj_dst_surf->fourcc == VA_FOURCC_P010)&&
+ (src_rect.width != dst_rect.width ||
+ src_rect.height != dst_rect.height)&&
+ intel_gpe_support_10bit_scaling(proc_ctx)) {
+ struct i965_proc_context *gpe_proc_ctx;
+ struct i965_surface src_surface, dst_surface;
+
+ src_surface.base = (struct object_base *)obj_src_surf;
+ src_surface.type = I965_SURFACE_TYPE_SURFACE;
+ dst_surface.base = (struct object_base *)obj_dst_surf;
+ dst_surface.type = I965_SURFACE_TYPE_SURFACE;
+ gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
Post by Zhao Yakui
vpp_fmt_cvt_ctx;
+
+ return gen9_p010_scaling_post_processing(ctx,
&gpe_proc_ctx->pp_context,
+&src_surface,
&src_rect,
+&dst_surface,
&dst_rect);
+ }
+ }
+
+ proc_ctx->surface_render_output_object = obj_dst_surf;
+ proc_ctx->surface_pipeline_input_object = obj_src_surf;
+ assert(pipeline_param->num_filters<= 4);
+
+ int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0;
+
+
if(obj_src_surf->fourcc == VA_FOURCC_P010) {
vpp_stage1 = 1;
vpp_stage2 = 0;
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
--
Sean V. Kelley <***@intel.com>
Open Source Technology Center / SSG
Intel Corp.
Zhao Yakui
2016-11-09 19:39:54 UTC
Permalink
This is the HW requirement and it is handled internally.

Signed-off-by: Zhao Yakui <***@intel.com>
---
src/gen75_picture_process.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
index 4f7f794..3c2e251 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -213,6 +213,8 @@ gen75_proc_picture(VADriverContextP ctx,
intel_gpe_support_10bit_scaling(proc_ctx)) {
struct i965_proc_context *gpe_proc_ctx;
struct i965_surface src_surface, dst_surface;
+ unsigned int tmp_width, tmp_x;
+

src_surface.base = (struct object_base *)obj_src_surf;
src_surface.type = I965_SURFACE_TYPE_SURFACE;
@@ -220,6 +222,12 @@ gen75_proc_picture(VADriverContextP ctx,
dst_surface.type = I965_SURFACE_TYPE_SURFACE;
gpe_proc_ctx = (struct i965_proc_context *)proc_ctx->vpp_fmt_cvt_ctx;

+ tmp_x = ALIGN_FLOOR(dst_rect.x, 2);
+ tmp_width = dst_rect.x + dst_rect.width;
+ tmp_width = tmp_width - tmp_x;
+ dst_rect.x = tmp_x;
+ dst_rect.width = tmp_width;
+
return gen9_p010_scaling_post_processing(ctx, &gpe_proc_ctx->pp_context,
&src_surface, &src_rect,
&dst_surface, &dst_rect);
--
2.8.3
Xiang, Haihao
2016-11-11 07:13:32 UTC
Permalink
LGTM.
Post by Zhao Yakui
This is the HW requirement and it is handled internally.
---
 src/gen75_picture_process.c | 8 ++++++++
 1 file changed, 8 insertions(+)
diff --git a/src/gen75_picture_process.c
b/src/gen75_picture_process.c
index 4f7f794..3c2e251 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -213,6 +213,8 @@ gen75_proc_picture(VADriverContextP ctx,
             intel_gpe_support_10bit_scaling(proc_ctx)) {
             struct i965_proc_context *gpe_proc_ctx;
             struct i965_surface src_surface, dst_surface;
+            unsigned int tmp_width, tmp_x;
+
 
             src_surface.base = (struct object_base *)obj_src_surf;
             src_surface.type = I965_SURFACE_TYPE_SURFACE;
@@ -220,6 +222,12 @@ gen75_proc_picture(VADriverContextP ctx,
             dst_surface.type = I965_SURFACE_TYPE_SURFACE;
             gpe_proc_ctx = (struct i965_proc_context *)proc_ctx-
Post by Zhao Yakui
vpp_fmt_cvt_ctx;
 
+            tmp_x = ALIGN_FLOOR(dst_rect.x, 2);
+            tmp_width = dst_rect.x + dst_rect.width;
+            tmp_width = tmp_width - tmp_x;
+            dst_rect.x = tmp_x;
+            dst_rect.width = tmp_width;
+
             return gen9_p010_scaling_post_processing(ctx,
&gpe_proc_ctx->pp_context,
                                                      &src_surface,
&src_rect,
                                                      &dst_surface,
&dst_rect);
Sean V Kelley
2016-11-14 22:46:40 UTC
Permalink
Post by Zhao Yakui
This is the HW requirement and it is handled internally.
lgtm,

Sean
Post by Zhao Yakui
---
src/gen75_picture_process.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
index 4f7f794..3c2e251 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -213,6 +213,8 @@ gen75_proc_picture(VADriverContextP ctx,
intel_gpe_support_10bit_scaling(proc_ctx)) {
struct i965_proc_context *gpe_proc_ctx;
struct i965_surface src_surface, dst_surface;
+ unsigned int tmp_width, tmp_x;
+
src_surface.base = (struct object_base *)obj_src_surf;
src_surface.type = I965_SURFACE_TYPE_SURFACE;
@@ -220,6 +222,12 @@ gen75_proc_picture(VADriverContextP ctx,
dst_surface.type = I965_SURFACE_TYPE_SURFACE;
gpe_proc_ctx = (struct i965_proc_context *)proc_ctx->vpp_fmt_cvt_ctx;
+ tmp_x = ALIGN_FLOOR(dst_rect.x, 2);
+ tmp_width = dst_rect.x + dst_rect.width;
+ tmp_width = tmp_width - tmp_x;
+ dst_rect.x = tmp_x;
+ dst_rect.width = tmp_width;
+
return gen9_p010_scaling_post_processing(ctx, &gpe_proc_ctx->pp_context,
&src_surface, &src_rect,
&dst_surface, &dst_rect);
--
2.8.3
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
--
Sean V. Kelley <***@intel.com>
Open Source Technology Center / SSG
Intel Corp.
Sean V Kelley
2016-11-10 22:31:24 UTC
Permalink
Hi Yakui,

Could you please submit a cover/overview for this 10bit work?

Thanks,

Sean
Post by Zhao Yakui
---
src/i965_gpe_utils.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index 3ec164d..a29237b 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1684,7 +1684,7 @@ gen8_gpe_setup_interface_data(VADriverContextP ctx,
memset(desc, 0, sizeof(*desc));
desc->desc0.kernel_start_pointer = kernel->kernel_offset >> 6;
desc->desc3.sampler_count = 0;
- desc->desc3.sampler_state_pointer = gpe_context->sampler_offset;
+ desc->desc3.sampler_state_pointer = (gpe_context->sampler_offset >> 5);
desc->desc4.binding_table_entry_count = 0;
desc->desc4.binding_table_pointer = (gpe_context->surface_state_binding_table.binding_table_offset >> 5);
desc->desc5.constant_urb_entry_read_offset = 0;
--
2.8.3
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
--
Sean V. Kelley <***@intel.com>
Open Source Technology Center / SSG
Intel Corp.
Xiang, Haihao
2016-11-11 04:44:33 UTC
Permalink
LGTM,
---
 src/i965_gpe_utils.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index 3ec164d..a29237b 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1684,7 +1684,7 @@ gen8_gpe_setup_interface_data(VADriverContextP ctx,
         memset(desc, 0, sizeof(*desc));
         desc->desc0.kernel_start_pointer = kernel->kernel_offset >>
6;
         desc->desc3.sampler_count = 0;
-        desc->desc3.sampler_state_pointer = gpe_context-
Post by Zhao Yakui
sampler_offset;
+        desc->desc3.sampler_state_pointer = (gpe_context-
Post by Zhao Yakui
sampler_offset >> 5);
         desc->desc4.binding_table_entry_count = 0;
         desc->desc4.binding_table_pointer = (gpe_context-
Post by Zhao Yakui
surface_state_binding_table.binding_table_offset >> 5);
         desc->desc5.constant_urb_entry_read_offset = 0;
Sean V Kelley
2016-11-14 22:12:29 UTC
Permalink
lgtm.
Post by Zhao Yakui
---
src/i965_gpe_utils.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index 3ec164d..a29237b 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1684,7 +1684,7 @@ gen8_gpe_setup_interface_data(VADriverContextP ctx,
memset(desc, 0, sizeof(*desc));
desc->desc0.kernel_start_pointer = kernel->kernel_offset >> 6;
desc->desc3.sampler_count = 0;
- desc->desc3.sampler_state_pointer = gpe_context->sampler_offset;
+ desc->desc3.sampler_state_pointer = (gpe_context->sampler_offset >> 5);
desc->desc4.binding_table_entry_count = 0;
desc->desc4.binding_table_pointer = (gpe_context->surface_state_binding_table.binding_table_offset >> 5);
desc->desc5.constant_urb_entry_read_offset = 0;
--
2.8.3
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
--
Sean V. Kelley <***@intel.com>
Open Source Technology Center / SSG
Intel Corp.
Loading...