Discussion:
[LIBVA_INTEL_DRIVER][PATCH v2 0/8] Add the 10bit VPP conversion for P010
(too old to reply)
Zhao Yakui
2016-11-11 01:56:02 UTC
Permalink
From: "Zhao, Yakui" <***@intel.com>

This is the patch set that tries to optimize the 10bit VPP conversion on
P010 surface. Currently it can support the 10bit VPP conversion on P010
surface.But when the size is changed, it needs the three-step conversion, which
leverage the VEBOX. (P010->NV12->scaled NV12->P010).

V1->V2: Follow Haihao's comments to update the patch set.
1. Use the is_16bpp field
2. Add the shader(conv_p010.g9b) into dist package
3. Remove the unnecessary function initialization in gen75_vpp_fmt_cvt
as it is already initalized.

Zhao Yakui (8):
Fix the incorrect sampler_state offset for INTERFACE_DESCRIPTOR_DATA
on BDW+
Add the 10-bit flag for MEDIA_BLOCK_RW operation on P010 surface
Add one API to initialize MEDIA_OBJECT_WALKER parameter for video
post-processing
Initialize internal context based on Render ring earlier
Initialize one 10bit-scaling gpe_context for Gen9
VPP select the appropriate fourcc for deferred surface based on
expected format
Execute the 10-bit scaling for P010 surface on Gen9+
Align coordinate/width of DST rect for 10-bit VPP conversion

src/gen75_picture_process.c | 73 ++-
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 | 96 ++-
src/i965_gpe_utils.h | 19 +-
src/i965_post_processing.h | 10 +
src/i965_render.h | 1 -
src/shaders/post_processing/gen9/Makefile.am | 4 +
src/shaders/post_processing/gen9/conv_p010.g9b | 783 +++++++++++++++++++++++++
14 files changed, 1474 insertions(+), 20 deletions(-)
create mode 100644 src/shaders/post_processing/gen9/conv_p010.g9b
--
1.9.0
Zhao Yakui
2016-11-11 01:56:03 UTC
Permalink
Signed-off-by: Zhao Yakui <***@intel.com>
Reviewed-by: Xiang, Haihao<***@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;
--
1.9.0
Zhao Yakui
2016-11-11 01:56:04 UTC
Permalink
V1->V2: Use the is_16bpp instead of is_10bit

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..d824c18 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_16bpp)
+ 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_16bpp)
+ 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..7415578 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_16bpp :1;

unsigned int vert_line_stride_offset;
unsigned int vert_line_stride;
--
1.9.0
Sean V Kelley
2016-11-14 22:13:34 UTC
Permalink
Post by Zhao Yakui
V1->V2: Use the is_16bpp instead of is_10bit
lgtm.

Sean
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..d824c18 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_16bpp)
+ 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_16bpp)
+ 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..7415578 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_16bpp :1;
unsigned int vert_line_stride_offset;
unsigned int vert_line_stride;
--
1.9.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-11 01:56:05 UTC
Permalink
Signed-off-by: Zhao Yakui <***@intel.com>
Reviewed-by: Xiang, Haihao<***@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 d824c18..f394c07 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -2082,3 +2082,51 @@ gen9_gpe_media_object_walker(VADriverContextP ctx,

ADVANCE_BATCH(batch);
}
+
+
+void
+intel_vpp_init_media_object_walker_parameter(struct intel_vpp_kernel_walker_parameter *kernel_walker_param,
+ struct gpe_media_object_walker_parameter *walker_param)
+{
+ memset(walker_param, 0, sizeof(*walker_param));
+
+ walker_param->use_scoreboard = kernel_walker_param->use_scoreboard;
+
+ walker_param->block_resolution.x = kernel_walker_param->resolution_x;
+ walker_param->block_resolution.y = kernel_walker_param->resolution_y;
+
+ walker_param->global_resolution.x = kernel_walker_param->resolution_x;
+ walker_param->global_resolution.y = kernel_walker_param->resolution_y;
+
+ walker_param->global_outer_loop_stride.x = kernel_walker_param->resolution_x;
+ walker_param->global_outer_loop_stride.y = 0;
+
+ walker_param->global_inner_loop_unit.x = 0;
+ walker_param->global_inner_loop_unit.y = kernel_walker_param->resolution_y;
+
+ walker_param->local_loop_exec_count = 0xFFFF; //MAX VALUE
+ walker_param->global_loop_exec_count = 0xFFFF; //MAX VALUE
+
+ if (kernel_walker_param->no_dependency) {
+ /* The no_dependency is used for VPP */
+ walker_param->scoreboard_mask = 0;
+ walker_param->use_scoreboard = 0;
+ // Raster scan walking pattern
+ walker_param->local_outer_loop_stride.x = 0;
+ walker_param->local_outer_loop_stride.y = 1;
+ walker_param->local_inner_loop_unit.x = 1;
+ walker_param->local_inner_loop_unit.y = 0;
+ walker_param->local_end.x = kernel_walker_param->resolution_x - 1;
+ walker_param->local_end.y = 0;
+ } else {
+ walker_param->local_end.x = 0;
+ walker_param->local_end.y = 0;
+
+ // 26 degree
+ walker_param->scoreboard_mask = 0x0F;
+ walker_param->local_outer_loop_stride.x = 1;
+ walker_param->local_outer_loop_stride.y = 0;
+ walker_param->local_inner_loop_unit.x = -2;
+ walker_param->local_inner_loop_unit.y = 1;
+ }
+}
diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
index 7415578..a70638b 100644
--- a/src/i965_gpe_utils.h
+++ b/src/i965_gpe_utils.h
@@ -508,4 +508,18 @@ gen9_gpe_media_object_walker(VADriverContextP ctx,
struct intel_batchbuffer *batch,
struct gpe_media_object_walker_parameter *param);

+
+struct intel_vpp_kernel_walker_parameter
+{
+ unsigned int use_scoreboard;
+ unsigned int scoreboard_mask;
+ unsigned int no_dependency;
+ unsigned int resolution_x;
+ unsigned int resolution_y;
+};
+
+extern void
+intel_vpp_init_media_object_walker_parameter(struct intel_vpp_kernel_walker_parameter *kernel_walker_param,
+ struct gpe_media_object_walker_parameter *walker_param);
+
#endif /* _I965_GPE_UTILS_H_ */
--
1.9.0
Zhao Yakui
2016-11-11 01:56:06 UTC
Permalink
V1->V2: Remove the unnecessary implicit initialization in gen75_vpp_fmt_cvt
as it is already initalized.

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

diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
index 0b681f1..6e1102a 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -53,11 +53,6 @@ gen75_vpp_fmt_cvt(VADriverContextP ctx,
struct intel_video_process_context *proc_ctx =
(struct intel_video_process_context *)hw_context;

- /* implicity surface format coversion and scaling */
- if(proc_ctx->vpp_fmt_cvt_ctx == NULL){
- proc_ctx->vpp_fmt_cvt_ctx = i965_proc_context_init(ctx, NULL);
- }
-
va_status = i965_proc_picture(ctx, profile, codec_state,
proc_ctx->vpp_fmt_cvt_ctx);

@@ -148,6 +143,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;
--
1.9.0
Sean V Kelley
2016-11-14 22:16:31 UTC
Permalink
Post by Zhao Yakui
V1->V2: Remove the unnecessary implicit initialization in gen75_vpp_fmt_cvt
as it is already initalized.
lgtm.

Sean
Post by Zhao Yakui
---
src/gen75_picture_process.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
index 0b681f1..6e1102a 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -53,11 +53,6 @@ gen75_vpp_fmt_cvt(VADriverContextP ctx,
struct intel_video_process_context *proc_ctx =
(struct intel_video_process_context *)hw_context;
- /* implicity surface format coversion and scaling */
- if(proc_ctx->vpp_fmt_cvt_ctx == NULL){
- proc_ctx->vpp_fmt_cvt_ctx = i965_proc_context_init(ctx, NULL);
- }
-
va_status = i965_proc_picture(ctx, profile, codec_state,
proc_ctx->vpp_fmt_cvt_ctx);
@@ -148,6 +143,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;
--
1.9.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-11 01:56:07 UTC
Permalink
V1->V2: Add the conv_p010.g9b shader into the dist list

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/Makefile.am | 4 +
src/shaders/post_processing/gen9/conv_p010.g9b | 783 +++++++++++++++++++++++++
13 files changed, 1336 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..a5d345c 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_16bpp = 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 e17c295..ed4dae1 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 f394c07..5d4ca5c 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_16bpp)
+ 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 a70638b..0cbef43 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_16bpp :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/Makefile.am b/src/shaders/post_processing/gen9/Makefile.am
index 3e0c2ce..4155cff 100644
--- a/src/shaders/post_processing/gen9/Makefile.am
+++ b/src/shaders/post_processing/gen9/Makefile.am
@@ -1,6 +1,9 @@
SRCDIR = $(top_srcdir)/src/shaders/post_processing/gen8
VPATH = $(SRCDIR)

+INTEL_PP_PRE_G9B = \
+ conv_p010.g9b
+
INTEL_PP_G9B = \
pl2_to_pl2.g9b \
pl2_to_pl3.g9b \
@@ -70,6 +73,7 @@ CLEANFILES = $(INTEL_PP_GEN9_ASM)

EXTRA_DIST = \
$(INTEL_PP_G9B) \
+ $(INTEL_PP_PRE_G9B)
$(NULL)

# Extra clean files so that maintainer-clean removes *everything*
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 },
--
1.9.0
Sean V Kelley
2016-11-14 22:43:09 UTC
Permalink
Post by Zhao Yakui
V1->V2: Add the conv_p010.g9b shader into the dist list
---
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/Makefile.am | 4 +
src/shaders/post_processing/gen9/conv_p010.g9b | 783 +++++++++++++++++++++++++
13 files changed, 1336 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..a5d345c 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_16bpp = 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 e17c295..ed4dae1 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 f394c07..5d4ca5c 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_16bpp)
+ 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);
A good rule of thumb:

If you're going to be rendering to a surface using the 3D engine, or
otherwise writing it via the GPU, I'd suggest I915_GEM_DOMAIN_RENDER.

If you're only sampling from it, or reading constant data, I'd use
I915_GEM_DOMAIN_SAMPLER.

It looks like to me you are only sampling from the binding table.
Please correct me if I am wrong.

I believe the thinking was that GEM would originally handle the
situation where buffers would switch from one domain to another, and
flush write/read caches as appropriate to ensure coherency. Nowadays,
the kernel just flushes most of them between batches anyway, since we
never observed reducing that to help performance, and it helped a lot
with stability (what with all the necessary workarounds).

Thanks,

Sean
Post by Zhao Yakui
+ } 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 a70638b..0cbef43 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_16bpp :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/Makefile.am b/src/shaders/post_processing/gen9/Makefile.am
index 3e0c2ce..4155cff 100644
--- a/src/shaders/post_processing/gen9/Makefile.am
+++ b/src/shaders/post_processing/gen9/Makefile.am
@@ -1,6 +1,9 @@
SRCDIR = $(top_srcdir)/src/shaders/post_processing/gen8
VPATH = $(SRCDIR)
+INTEL_PP_PRE_G9B = \
+ conv_p010.g9b
+
INTEL_PP_G9B = \
pl2_to_pl2.g9b \
pl2_to_pl3.g9b \
@@ -70,6 +73,7 @@ CLEANFILES = $(INTEL_PP_GEN9_ASM)
EXTRA_DIST = \
$(INTEL_PP_G9B) \
+ $(INTEL_PP_PRE_G9B)
$(NULL)
# Extra clean files so that maintainer-clean removes *everything*
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 },
--
1.9.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-16 01:01:34 UTC
Permalink
Post by Sean V Kelley
Post by Zhao Yakui
V1->V2: Add the conv_p010.g9b shader into the dist list
---
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/Makefile.am | 4 +
src/shaders/post_processing/gen9/conv_p010.g9b | 783 +++++++++++++++++++++++++
13 files changed, 1336 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..a5d345c 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_16bpp = 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 e17c295..ed4dae1 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 f394c07..5d4ca5c 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_16bpp)
+ 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);
If you're going to be rendering to a surface using the 3D engine, or
otherwise writing it via the GPU, I'd suggest I915_GEM_DOMAIN_RENDER.
If you're only sampling from it, or reading constant data, I'd use
I915_GEM_DOMAIN_SAMPLER.
It looks like to me you are only sampling from the binding table.
Please correct me if I am wrong.
Thanks for the review.

For the usage scenario of 10bit sampling, it is OK to use the
DOMAIN_SAMPLER.
But the above code path also covers the other reading function, which is
based on Render cache. So the DOMAIN_RENDER is used for read domain. And
it is also safe to configure DOMAIN_RENDER for sampling engine.
Post by Sean V Kelley
I believe the thinking was that GEM would originally handle the
situation where buffers would switch from one domain to another, and
flush write/read caches as appropriate to ensure coherency. Nowadays,
the kernel just flushes most of them between batches anyway, since we
never observed reducing that to help performance, and it helped a lot
with stability (what with all the necessary workarounds).
Right. The current kernel GEM driver doesn't distinguish the
DOMAIN_SAMPLER and DOMAIN_RENDER very clearly especially for the latest
hw platform. They only care the domain switch to ensure CPU/GPU cache
coherency. In such case I think that it is safe/simple to configure the
DOMAIN_RENDER for read and write domain.
Post by Sean V Kelley
Thanks,
Sean
Post by Zhao Yakui
+ } 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 a70638b..0cbef43 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_16bpp :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/Makefile.am b/src/shaders/post_processing/gen9/Makefile.am
index 3e0c2ce..4155cff 100644
--- a/src/shaders/post_processing/gen9/Makefile.am
+++ b/src/shaders/post_processing/gen9/Makefile.am
@@ -1,6 +1,9 @@
SRCDIR = $(top_srcdir)/src/shaders/post_processing/gen8
VPATH = $(SRCDIR)
+INTEL_PP_PRE_G9B = \
+ conv_p010.g9b
+
INTEL_PP_G9B = \
pl2_to_pl2.g9b \
pl2_to_pl3.g9b \
@@ -70,6 +73,7 @@ CLEANFILES = $(INTEL_PP_GEN9_ASM)
EXTRA_DIST = \
$(INTEL_PP_G9B) \
+ $(INTEL_PP_PRE_G9B)
$(NULL)
# Extra clean files so that maintainer-clean removes *everything*
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 },
--
1.9.0
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Zhao Yakui
2016-11-16 07:53:36 UTC
Permalink
Post by Zhao Yakui
Post by Sean V Kelley
Post by Zhao Yakui
V1->V2: Add the conv_p010.g9b shader into the dist list
+ 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);
If you're going to be rendering to a surface using the 3D engine, or
otherwise writing it via the GPU, I'd suggest I915_GEM_DOMAIN_RENDER.
If you're only sampling from it, or reading constant data, I'd use
I915_GEM_DOMAIN_SAMPLER.
It looks like to me you are only sampling from the binding table.
Please correct me if I am wrong.
Thanks for the review.
For the usage scenario of 10bit sampling, it is OK to use the
DOMAIN_SAMPLER.
But the above code path also covers the other reading function, which is
based on Render cache. So the DOMAIN_RENDER is used for read domain. And
it is also safe to configure DOMAIN_RENDER for sampling engine.
Post by Sean V Kelley
I believe the thinking was that GEM would originally handle the
situation where buffers would switch from one domain to another, and
flush write/read caches as appropriate to ensure coherency. Nowadays,
the kernel just flushes most of them between batches anyway, since we
never observed reducing that to help performance, and it helped a lot
with stability (what with all the necessary workarounds).
Right. The current kernel GEM driver doesn't distinguish the
DOMAIN_SAMPLER and DOMAIN_RENDER very clearly especially for the latest
hw platform. They only care the domain switch to ensure CPU/GPU cache
coherency. In such case I think that it is safe/simple to configure the
DOMAIN_RENDER for read and write domain.
Hi, Sean

More info is added.
It is also OK that the read domain is configured to DOMAIN_RENDER or
DOMAIN_SAMPLER if we can know the corresponding GPU cache type. But in
such case we have to distinguish the corresponding reading operation for
the given surfaces. And more fields are required to record the
corresponding domain for the given operation. It will become quite
complex. So IMO it will be simple to configure the DOMAIN_RENDER for the
read domain and then the kernel GEM driver helps to handle the cache
coherency.

BTW: The Beignet OpenCL also uses the simple mechanism for the sampling
engine. (The DOMAIN_RENDER is used for the read domain).

Thanks
Yakui
Post by Zhao Yakui
Post by Sean V Kelley
Thanks,
Sean
Post by Zhao Yakui
+ } 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 a70638b..0cbef43 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_16bpp :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/Makefile.am
b/src/shaders/post_processing/gen9/Makefile.am
index 3e0c2ce..4155cff 100644
--- a/src/shaders/post_processing/gen9/Makefile.am
+++ b/src/shaders/post_processing/gen9/Makefile.am
@@ -1,6 +1,9 @@
SRCDIR = $(top_srcdir)/src/shaders/post_processing/gen8
VPATH = $(SRCDIR)
+INTEL_PP_PRE_G9B = \
+ conv_p010.g9b
+
INTEL_PP_G9B = \
pl2_to_pl2.g9b \
pl2_to_pl3.g9b \
@@ -70,6 +73,7 @@ CLEANFILES = $(INTEL_PP_GEN9_ASM)
EXTRA_DIST = \
$(INTEL_PP_G9B) \
+ $(INTEL_PP_PRE_G9B)
$(NULL)
# Extra clean files so that maintainer-clean removes *everything*
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 },
--
1.9.0
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Sean V Kelley
2016-11-16 17:26:47 UTC
Permalink
Hi Yakui,
Post by Zhao Yakui
Post by Zhao Yakui
Post by Sean V Kelley
Post by Zhao Yakui
V1->V2: Add the conv_p010.g9b shader into the dist list
+ 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);
If you're going to be rendering to a surface using the 3D engine, or
otherwise writing it via the GPU, I'd suggest I915_GEM_DOMAIN_RENDER.
If you're only sampling from it, or reading constant data, I'd use
I915_GEM_DOMAIN_SAMPLER.
It looks like to me you are only sampling from the binding table.
Please correct me if I am wrong.
Thanks for the review.
For the usage scenario of 10bit sampling, it is OK to use the
DOMAIN_SAMPLER.
But the above code path also covers the other reading function, which is
based on Render cache. So the DOMAIN_RENDER is used for read domain. And
it is also safe to configure DOMAIN_RENDER for sampling engine.
Post by Sean V Kelley
I believe the thinking was that GEM would originally handle the
situation where buffers would switch from one domain to another, and
flush write/read caches as appropriate to ensure coherency. Nowadays,
the kernel just flushes most of them between batches anyway, since we
never observed reducing that to help performance, and it helped a lot
with stability (what with all the necessary workarounds).
Right. The current kernel GEM driver doesn't distinguish the
DOMAIN_SAMPLER and DOMAIN_RENDER very clearly especially for the latest
hw platform. They only care the domain switch to ensure CPU/GPU cache
coherency. In such case I think that it is safe/simple to configure the
DOMAIN_RENDER for read and write domain.
Hi, Sean
More info is added.
It is also OK that the read domain is configured to DOMAIN_RENDER or
DOMAIN_SAMPLER if we can know the corresponding GPU cache type. But in such
case we have to distinguish the corresponding reading operation for the
given surfaces. And more fields are required to record the corresponding
domain for the given operation. It will become quite complex. So IMO it will
be simple to configure the DOMAIN_RENDER for the read domain and then the
kernel GEM driver helps to handle the cache coherency.
Agreed, based on the use case here where we also have to cover read
operations from the render cache.
Post by Zhao Yakui
BTW: The Beignet OpenCL also uses the simple mechanism for the sampling
engine. (The DOMAIN_RENDER is used for the read domain).
Okay.


lgtm.

Sean
Post by Zhao Yakui
Thanks
Yakui
Post by Zhao Yakui
Post by Sean V Kelley
Thanks,
Sean
Post by Zhao Yakui
+ } 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 a70638b..0cbef43 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_16bpp :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/Makefile.am
b/src/shaders/post_processing/gen9/Makefile.am
index 3e0c2ce..4155cff 100644
--- a/src/shaders/post_processing/gen9/Makefile.am
+++ b/src/shaders/post_processing/gen9/Makefile.am
@@ -1,6 +1,9 @@
SRCDIR = $(top_srcdir)/src/shaders/post_processing/gen8
VPATH = $(SRCDIR)
+INTEL_PP_PRE_G9B = \
+ conv_p010.g9b
+
INTEL_PP_G9B = \
pl2_to_pl2.g9b \
pl2_to_pl3.g9b \
@@ -70,6 +73,7 @@ CLEANFILES = $(INTEL_PP_GEN9_ASM)
EXTRA_DIST = \
$(INTEL_PP_G9B) \
+ $(INTEL_PP_PRE_G9B)
$(NULL)
# Extra clean files so that maintainer-clean removes *everything*
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 },
--
1.9.0
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________
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-17 04:38:34 UTC
Permalink
Applied, Thanks
Post by Sean V Kelley
Hi Yakui,
Post by Zhao Yakui
Post by Zhao Yakui
Post by Sean V Kelley
Post by Zhao Yakui
V1->V2: Add the conv_p010.g9b shader into the dist list
+ 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);
If you're going to be rendering to a surface using the 3D engine, or
otherwise writing it via the GPU, I'd suggest
I915_GEM_DOMAIN_RENDER.
If you're only sampling from it, or reading constant data, I'd use
I915_GEM_DOMAIN_SAMPLER.
It looks like to me you are only sampling from the binding table.
Please correct me if I am wrong.
Thanks for the review.
For the usage scenario of 10bit sampling, it is OK to use the
DOMAIN_SAMPLER.
But the above code path also covers the other reading function, which is
based on Render cache. So the DOMAIN_RENDER is used for read domain. And
it is also safe to configure DOMAIN_RENDER for sampling engine.
Post by Sean V Kelley
I believe the thinking was that GEM would originally handle the
situation where buffers would switch from one domain to
another, and
flush write/read caches as appropriate to ensure coherency. Nowadays,
the kernel just flushes most of them between batches anyway, since we
never observed reducing that to help performance, and it helped a lot
with stability (what with all the necessary workarounds).
Right. The current kernel GEM driver doesn't distinguish the
DOMAIN_SAMPLER and DOMAIN_RENDER very clearly especially for the latest
hw platform. They only care the domain switch to ensure CPU/GPU cache
coherency. In such case I think that it is safe/simple to
configure the
DOMAIN_RENDER for read and write domain.
Hi, Sean
More info is added.
It is also OK that the read domain is configured to DOMAIN_RENDER or
DOMAIN_SAMPLER if we can know the corresponding GPU cache type. But in such
case we have to distinguish the corresponding reading operation for the
given surfaces. And more fields are required to record the
corresponding
domain for the given operation. It will become quite complex. So IMO it will
be simple to configure the DOMAIN_RENDER for the read domain and then the
kernel GEM driver helps to handle the cache coherency.
Agreed, based on the use case here where we also have to cover read
operations from the render cache.
Post by Zhao Yakui
BTW: The Beignet OpenCL also uses the simple mechanism for the sampling
engine. (The DOMAIN_RENDER is used for the read domain).
Okay.
lgtm.
Sean
Post by Zhao Yakui
Thanks
  Yakui
Post by Zhao Yakui
Post by Sean V Kelley
Thanks,
Sean
Post by Zhao Yakui
+ } 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 a70638b..0cbef43 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_16bpp :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/Makefile.am
b/src/shaders/post_processing/gen9/Makefile.am
index 3e0c2ce..4155cff 100644
--- a/src/shaders/post_processing/gen9/Makefile.am
+++ b/src/shaders/post_processing/gen9/Makefile.am
@@ -1,6 +1,9 @@
SRCDIR = $(top_srcdir)/src/shaders/post_processing/gen8
VPATH = $(SRCDIR)
+INTEL_PP_PRE_G9B = \
+ conv_p010.g9b
+
INTEL_PP_G9B = \
pl2_to_pl2.g9b \
pl2_to_pl3.g9b \
@@ -70,6 +73,7 @@ CLEANFILES = $(INTEL_PP_GEN9_ASM)
EXTRA_DIST = \
$(INTEL_PP_G9B) \
+ $(INTEL_PP_PRE_G9B)
$(NULL)
# Extra clean files so that maintainer-clean removes
*everything*
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 },
--
1.9.0
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Zhao Yakui
2016-11-11 01:56:08 UTC
Permalink
Signed-off-by: Zhao Yakui <***@intel.com>
Reviewed-by: Xiang, Haihao<***@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 6e1102a..ee99c88 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -153,6 +153,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);
}
--
1.9.0
Zhao Yakui
2016-11-11 01:56:09 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-step
conversions, which leverages the VEBOX(P010->NV12->Scale NV12->P010). Of
course when the size is not changed, it still falls back to VEBOX.

Signed-off-by: Zhao Yakui <***@intel.com>
Reviewed-by: Xiang, Haihao<***@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 ee99c88..d012ba4 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,
@@ -86,6 +87,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,
@@ -160,12 +176,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;
@@ -190,6 +200,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;
--
1.9.0
Zhao Yakui
2016-11-11 01:56:10 UTC
Permalink
This is the HW requirement and it is handled internally.

Signed-off-by: Zhao Yakui <***@intel.com>
Reviewed-by: Xiang, Haihao<***@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 d012ba4..40b4ffc 100644
--- a/src/gen75_picture_process.c
+++ b/src/gen75_picture_process.c
@@ -208,6 +208,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;
@@ -215,6 +217,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);
--
1.9.0
Loading...